-
ORG 3000H
--
-
DB
10H,80H, 30H,80H,50H,80H
答:( A)=80H ,( SP)=40H,(41H)=50H,(42H)=80H ,(PC) =8050H 4. 编写程序,查找在内部 RAM的 30H~50H单元中是否有 0AAH这一数据。若有,则将 51H单元置为“ 01H”;若未找到,则将 51H单元置为“ 00H”。 答:参考程序如下:
START:
MOV R0,#30H
MOV R2,#20H LOOP:
MOV
A,@R0
CJNE A,#0AAH,NEXT MOV
51H,#01H
LJMP EXIT NEXT: INC
R0
DJNZ R2,LOOP MOV 51H,#00H
EXIT: RET
5. 写出完成如下要求的程序段,但是不能改变未涉及位的内容。
A. 把 ACC.3, ACC.4, ACC.5和 ACC.6 清“ 0”。 B. 把累加器 A 的中间 4 位清“ 0”。 C. 把 ACC.2和 ACC.3 置“ 1”。 答: A. ANL A,#87H
B. ANL A,#0C3H C. ORL A,#0CH
6. 若 SP=60H,标号 LABEL所在的地址为 3456H。LCALL指令的地址为 下指令:
2000H LCALL LABEL
--
,执行如 2000H-
后( 1)堆栈指针 SP和堆栈内容发生了什么变化?( 2)PC的值等于什么?( 3)如果将指令 LCALL直接换成 ACALL是否可以?( 4)如果换成 ACALL指令,可调
SP=SP+1=62H
(2)PC=3456H (3)不可以
(4)2KB= 2048 Byte
7. 试编写程序,查找在内部 RAM的 20H~40H单元中出现“ 00H”这一数据的次数,
NEXT: LOOP:
并将查找到的结果存入 41H单元。 答:参考程序如下:
START:
MOV MOV MOV MOV JNZ INC INC
41H,#0
用的地址范围是什么? 答:
( 1)SP=SP+1=61H
(61H)=PC的低字节 =03H
(62H)=PC的高字节 =20H
R0,#20H R2,#20H A,@R0 NEXT 41H R0
DJNZ R2,LOOP RET
8. 对例 3-22 中的程序进行修改,使其达到精确的 50ms延时时间。
答:原来的程
序:
ORG
D50ms:
0100H
;执行时间 1μs
MOV R7,#200
--
-
D1: MOV
R6,#125
;执行时间 1μs
--