MOV DPTR,#1000H MOVX A,@DPTR MOV DPTR,#4000H
MOV @DPTR,A
(7)ROM的1000H单元内容送到片内RAM的50H单元中。
MOV A,#0 MOV DPTR,#1000H MOVC A,@A+DPTR MOV 20H,A
(8)ROM的1000H单元内容送到片外RAM的1000H单元中。
MOV A,#0 MOV DPTR,#1000H MOVC A,@A+DPTR MOVX @DPTR,A
5.区分下列指令有什么不同? (1)MOV A,20H和MOV A,#20H
答:前者源操作数是直接寻址,后者源操作数立即寻址。
(2)MOV A,@R1和MOVX A,@R1
答:前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。
(3)MOV A,R1和MOV A,@R1
答:前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。
(4)MOVX A,@R1和MOVX A,@DPTR
答:前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器整个64K字节。
(5)MOVX A,@DPTR和MOVC A,@A+DPTR
答:前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储器。
6.设片内RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)
=0CAH。分析下列指令执行后片内RAM的20H、40H、10H单元以及P1、P2中的内容。
MOV R0,#20H MOV A,@R0 ;A=40H MOV R1,A ;R1=40H MOV A,@R1 ;A=10H MOV @R0,P1
;(40H)=0CAH
MOV P2,P1 P2=0CAH MOV 10H,A (10H)=10H MOV 20H,10H
(20H)=10H
结果:(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH 7.已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内RAM(7FH)
=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下各条指令执行后目标单元的内容。
(1)MOV A,@R1
结果:累加器A等于70H
结果:片外RAM(2FFCH)单元等于02H 结果: 累加器A等于64H
结果:累加器A等于00H,片内RAM(7FH)
(2)MOVX @DPTR,A (3)MOVC A,@A+DPTR (4)XCHD A,@R1 单元等于72H
8.已知:(A)=78H,(R1)=78H,(B)=04H,CY=1,片内RAM(78H)=0DDH,(80H)=6CH,试分别写出下列指令执行后目标单元的结果和相应标志位的值。
(1)ADD A,@R1
;累加器A等于55H,CY等于1
(2)SUBB A,#77H (3)MUL AB 等于1,OV等于0 (4)DIV AB CY、OV等于0
;累加器A等于00H,CY等于0
;累加器A等于E0H,B寄存器等于01H,CY;累加器A等于1EH,B寄存器等于00H,
(5)ANL 78H,#78H ;片内RAM(78H)单元等于58H (6)ORL A,#0FH (7)XRL 80H,A
;累加器A等于7FH ;片内RAM(80H)等于14H
9.设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器A、R0、17H单元的内容。
ANL A,#17H ORL 17H,A XRL A,@R0 CPL A
;A=03H
;(17H)=37H ;A=34H
;A=CBH
结果:A=CBH,(R0)=17H,(17H)=37H 10.写出完成下列要求的指令。
(1)累加器A的低2位清零,其余位不变。
ANL A,#11111100B
(2)累加器A的高2位置“1”,其余位不变。
ORL A,#11000000B
(3)累加器的高4位取反,其余位不变。
XRL A,#11110000B
(4)累加器第0位、2位、4位、6位取反,其余位不变。
XRL A,#01010101B
11.说明LJMP指令与AJMP指令的区别?
答:LJMP指令后面提供的是16位目标地址,所以可以转移到64KB程序存储器的任意位置,缺点是:执行时间长,字节数多。
AJMP指令后带的是11位直接地址,执行时,先将程序指针PC的值加2(该指令长度为2字节),然后把指令中的11位地址addr11送给程序指针PC的低11位,而程序指针的高5位不变,只能在当前2K范围内转移。 12.设当前指令CJNE A,#12H,10H的地址是0FFEH,若累加器A的值为10H,则该指令执行后的PC值为多少?若累加器A的值为12H呢?
答:指令执行后的PC值为1011H,若累加器A的值为12H,则指令执行后的PC值为1001H。
13.用位处理指令实现P1.4=P1.0?(P1.1?P1.2)?/P1.3的逻辑功能。
程序: MOV C,P1.1 ORL C,P1.2 ANL C,P1.0 ORL C,/P1.3 MOV P1.4,C
14.下列程序段汇编后,从1000H单元开始的单元内容是什么? ORG 1000H
TAB: DB 12H,34H
DS 3
DW 5567H,87H
答:(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H
15.试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片外RAM的20H、21H、22H中。
程序:
MOV MOV
R0,#20H R2,#03H
LOOP:MOV A,@R0
MOVX @R0,A INC
R0
DJNZ R2,LOOP SJMP $
16.编程实现将片外RAM的2000H~2030H单元的内容,全部搬到片内RAM的20H单元开始位置,并将源位置清零。
程序: MOV MOV MOV
R0,#20H DPTR,#2000H R2,#30H
LOOP: MOVX A,@DPTR
MOV @R0,A MOV A,#00 MOVX @DPTR,A INC
DPTR R0
INC
DJNZ R2,LOOP SJMP $
17.编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于R7R6中。
程序: MOV
DPTR,#1000H