📜  门| GATE-CS-2003 |第49章

📅  最后修改于: 2021-06-29 05:37:34             🧑  作者: Mango

考虑以下用于假设处理器的汇编语言程序。 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)是正确的选择
这个问题的测验