我明天参加考试,我对此问题感到非常困惑。执行每条指令后,AL和AH寄存器中包含的值是什么。在执行每条指令之前,假设AL = 9且AH = 0。
•nop(没有操作它们保持不变)
•mov al,ah(al = 0 ah = 0)
•推斧(将ah和al推到堆栈上?)
•dec ax
•添加ax,257
•添加al,251
•shl al,2
我知道前几个我在提到斧头时感到困惑,即添加斧头,257我应该将257添加到啊和al?只记得al和ah在每条指令的开头都设置回9和0
答案 0 :(得分:1)
AX是AH和AL的串联(反之,AL是AX的低字节,AH是AX的高字节)。因此,在每条指令之前,AX = 0009h。
但是当你的一条指令在AL上运行时,它根本不会影响AH。
答案 1 :(得分:1)
请记住,al和ah只是引用ax寄存器的低位字节和高位字节的方法。使用AX时,最好在出现时将其视为16位寄存器,然后在询问AH或AL的值时将其分解为更低和更高的一半。所以你的寄存器看起来像是这样,如果他们从9和0开始:
00000000 00001001
|________| |________|
AH AL
|___________________|
AX
因此,例如add ax, 257
看起来像这样:
|0000000| |00001001|
+
|0000001| |00000001|
= |0000001| |00001010|