9.设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器A、R0、17H单元的内容。
ANL A,#17H ;A=03H
ORL 17H,A ;(17H)=37H XRL A,@R0 ;A=34H CPL A ;A=CBH
结果:A=CBH,(R0)=17H,(17H)=37H ※10.写出完成下列要求的指令。※
(1)累加器A的低2位清零,其余位不变。与0与 ANL A,#11111100B
(2)累加器A的高2位置“1”,其余位不变。与1或 ORL A,#11000000B
(3)累加器的高4位取反,其余位不变。与1异或 XRL A,#11110000B
(4)累加器第0位、2位、4位、6位取反,其余位不变。与1异或 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呢?笔记P17
答:指令执行后的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 ;笔记P21
DS 3 ;笔记p22,保留空间
DW 5567H,87H ;笔记p22,高字节→低地址 答:(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=55H,(1006H)=67H,(1007H)=00H,(1008H)=87H
※15.试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片外RAM的20H、21H、22H中。 程序:
MOV R0,#20H MOV R2,#03H MOV P2,#00H LOOP:MOV A,@R0 MOVX @R0,A INC R0 DJNZ R2,LOOP SJMP $
※16.编程实现将片外RAM的2000H~2030H单元的内容,全部搬到片内RAM的20H单元开始位置,并将源位置清零。
程序:
MOV R0,#20H MOV DPTR,#2000H