考虑以下用于假设处理器的汇编语言程序。 A,B和C是8位寄存器。各种说明的含义显示为注释。
MOV B, # 0 | ; | B ← 0 | |
MOV C, # 8 | ; | C ← 8 | |
Z : | CMP C, # 0 | ; | compare C with 0 |
JZX | ; | jump to X if zero flag is set | |
SUB C, # 1 | ; | C ← C – 1 | |
RRC A, # 1 | ; | right rotate A through carry by one bit. Thus: | |
; | if the initial values of A and the carry flag are a7…a0 and | ||
; | c0 respectively, their values after the execution of this | ||
; | instruction will be c0a7…a1 and a0 respectively. | ||
JC Y | ; | jump to Y if carry flag is set | |
JMP Z | ; | jump to Z | |
Y : | ADD B, # 1 | ; | B ← B + 1 |
JMP Z | ; | jump to Z | |
X : |
在位置X处插入以下哪条指令,将确保程序执行后寄存器A的值与其初始值相同?
(A) RRC A,#
(B) NOP;无操作
(C) LRC A,#1;左移A通过进位标志一位
(D)添加A#1答案: (A)
说明:说明
在程序执行结束时,要检查寄存器A的初始值和最终值是否均为A0,由于RRC指令为(累加器的每个二进制位都右移一位,所以我们需要通过进位将寄存器A右移一位。位D0放置在D7的位置以及进位标志中,根据位D0修改CY(其他位不受影响)。
所以(A)是正确的选择
这个问题的测验