我正在学习装配测试,我在确定如何在一组指令后确定值时遇到了问题。
执行所有这些指令后,ax中有什么十六进制值?
mov ax, -4
imul ah
imul al
ANSWER: AX=0010
根据我的说法,在imul指令之前,ax的值应该是FFFC。
答案 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