考虑以下用于假设处理器的汇编语言程序。 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 : |
(A) A0中的0位数
(B) A0中的1位数目
(C) A0
(D) 8答案: (B)
说明:答案: (B)
解释:
说明:仅当进位标志为1且始终使用右旋填充进位时,B的值才增加1。因此,B将存储编号。在A0中为1秒。 RRC指令是(累加器的每个二进制位向右旋转一位。D0位位于D7的位置以及进位标志中。CY根据位D0进行修改。其他任何位均不受影响)。因此,A = A0,并在执行RRC A,#1之后,设置进位标志,它转到Y,即B = B + 1,其中B = B + 1 + 1 = 1,因此(B)是正确的选项
这个问题的测验