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

📅  最后修改于: 2021-06-30 01:12:40             🧑  作者: 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
(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)是正确的选项
这个问题的测验