📜  门| GATE-CS-2003 |第 48 题

📅  最后修改于: 2021-09-26 04:45:02             🧑  作者: 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 :

(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)是正确选项
这个问题的测验