ORL 20H,A ;(20H)=FFH
XRL A,@R1 ;(A)=AAH
CPL A ;(A)=55H
执行完程序段后,A的内容为5 5 H。
【3—16]设内部数据存储器30 H、31 H单元中连续存放有4位BCD码数符,试编程序把4位BCD码数符倒序排列。请对源程序加以注释。
【答】源程序如下:
MOV R0,#30H
MOV R1,#31H
MOV A,@R0 ;30H单元内容送A
SWAP A ;A的高4位与低4位交换(a2与a3)
MOV @R0,A
MOV A,@R1 ;31H单元内容送A
SWAP A ;A的高4位与低4位交换(a0与a1)
XCH A,@R0 ;30H与31H单元内容交换
MOV @R1,A ,
HERE:SJMP HERE
【3-17】设(A)=C3 H,(RO)=AAH。分析指令“ADD A,R0"的执行结果。
【答】 1 1 0 0 0 0 1 1 B
+10101010B
C=1 0 1 1 0 1 1 0 1 B
执行结果:(A)=6DH,(CY)=1,(OV)=1,(AC)=O。PSW=10XXXIXl。
分析:第6位无进位而第7位有进位,故溢出标志OV=1。对于两个带符号数相加,OV=1即表示出现两个负数相加,结果为正数的错误;对于两个无符号数相加,不必考虑OV值。
第7位有进位,故进位标志C=1。对于两个无符号数相加,C=1即表示相加后有正常溢出,可用于多字节无符号数相加。对于两个带符号数相加,不必考虑C值。
【3-l8】阅读下列程序,说明其功能。
MOV R0,#30H
MOV A, @R0
RL A
MOV RI,A
RL A
RL A
ADD A.Rl
MOV @R0,A
【答】对程序注释如下:
MOV R0,#30H ;(RO)=30H
M0V A,@R0 ;取数
RL A ;(A)×2
MOV R1,A