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