首先你要清楚:你的对应CPU芯片的STD.h文件里有相应的端口地址如sfr P0=0X3F0;sbit p0^7=0x3f7;而0x3F7就是芯片内置的对应输出地址。再用outb(n,0x3f0)就好汇编。相当于P3^7=n;如果是输入是检查对应引脚状态或者对应地址读入。因为不知道你的Cpu到底是哪个所以设定地址我不清楚。如果是16位的是out addr,al;如果是ATT out %al,%addr;
将以 R2、R3 为首地址的源 RAM 区的 R6、R7 字节的数据
传送到以 R4、R5 为首地址的目的 RAM 区。
设定 R2、R3 所存储的源 RAM 首地址为 2000H(即 R2、R3 分别为 20H、00H),
R4、R5 所存储的目的 RAM 首地址为 4000H(即 R4、R5 分别为 40H、00H),
R6、R7 所存储 的字节数为 1FFFH(即 R6、R7 分别为 1FH、0FFH)。
---------------------
MOV R2,#20H
MOV R3,#00H
MOV R4,#40H
MOV R5,#00H
MOV R6,#1FH
MOV R7,#0FFH
LOOP:
MOV DPH,R2
MOV DPL,R3
MOVX A,@DPTR
INC DPTR
MOV R2,DPH
MOV R3,DPL
MOV DPH,R4
MOV DPL,R5
MOVX @DPTR,A
INC DPTR
MOV R4,DPH
MOV R5,DPL
DJNZ R7,LOOP
DJNZ R6,LOOP
SJMP $
END
51单片机,数据块传送程序设计,汇编语言程序怎么写?
将 RAM 中 2000H~2FFFH 存储内容的
前一半复制到 3000H~37FFH 存储区和 3800H~3FFFH 存储区,
后一半复制到 4000H~47FFH 存储区和 4800H~ 4FFFH 存储区
----------------------------
RAM 中 2000H~2FFFH 的前一半是:2000H~27FFH,
送到:3000H~37FFH、4000H~47FFH。
MOV R0, #0
MOV R2, #20H
MOV R3, #30H
MOV R4, #40H
LOP1:
MOV P2, R2
MOVX A, @R0 ;A←(P2P0=2000H)
MOV P2, R3
MOVX @R0, A ;(P2P0=3000H)←A
MOV P2, R4
MOVX @R0, A ;(P2P0=4000H)←A
DJNZ R0, LOP1
INC R2
INC R3
INC R4
CJNE R4, #48H, LOP1
SJMP $
----------------------------
后一半传送,与前一半雷同,改改初始地址即可。
一楼扯淡,对ROM的读取居然不用MOVC而用MOV。我来给个注释,楼主可以无视我。
MOV R0,#0 ;R0作为片外存储器的地址,起始为0
MOV DPTR,#200H ;所要读取的ROM的地址,用DPTR取表
LOOP: MOV A,R0
;将R0作为步进的地址量,因为两个地址一个是从0开始,一个是从200H开始,所以DPTR里的200H不变,而更改A和R0,就可以套用下面的两句来循环了
MOVC A,@A+DPTR ;将ROM中的值取至累加器A中,常见的固定格式
MOVX @R0,A ;将读取的值依次送到0000~0007H处
INC R0 ;R0从0000~0007H递增
CJNE R0,#08,LOOP;判断是否达到0007H,决定是否继续递增R0
单片机汇编语言数据传递的介绍到此就结束了,感谢您耐心阅读,谢谢。
本文标签:单片机汇编语言数据传递