执行指令后的十六进制值

时间:2015-10-28 19:30:21

标签: assembly

我正在学习装配测试,我在确定如何在一组指令后确定值时遇到了问题。

执行所有这些指令后,ax中有什么十六进制值?

mov ax, -4
imul ah
imul al
ANSWER: AX=0010
  

根据我的说法,在imul指令之前,ax的值应该是FFFC。

1 个答案:

答案 0 :(得分:3)

imul根据操作数的大小而有所不同。 imul ah已签名乘法AX = AL * AH(无DX)。让我们一步一步来做:

mov ax, -4

AX现在是FFFCh,这意味着AH = FFh(在8位上下文中= -1),AL = FCh(在8位上下文中= -4)。

imul ah

AX =( - 1)*( - 4)=(+4)= 0004h

imul al

AX =(+ 4)*(+4)= 16 = 0010h