考虑以下用于假设处理器的汇编语言程序。 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)否决;无操作
(C) LRC A,#1;通过进位标志向左旋转 A 一位
(D)添加 A,#1答案:(一)
说明:说明
在程序执行结束时检查寄存器A的初始值和最终值是否都是A0,我们需要通过进位将寄存器A右循环一位,因为RRC指令是(累加器的每个二进制位右循环一位。 D0 位放置在 D7 的位置以及进位标志中。CY 根据位 D0 进行修改。任何其他位不受影响)。
所以(A)是正确的选项
这个问题的测验