Assembly 执行指令后的十六进制值

Assembly 执行指令后的十六进制值,assembly,Assembly,我正在为一个组装测试而学习,我一直很难确定在一组指令之后如何确定值 执行所有这些指令后,ax中的十六进制值是多少 mov ax, -4 imul ah imul al ANSWER: AX=0010 根据我的总结,在imul指令之前,ax的值应该是FFFC imul根据操作数的大小而不同imul-ah是有符号的乘法AX=AL*ah(无DX)。让我们一步一步来: mov ax, -4 AX现在是FFFCh,这意味着AH=FFh(=在8位上下文中为-1),AL=FCh(=在8位上下文中为-4)

我正在为一个组装测试而学习,我一直很难确定在一组指令之后如何确定值

执行所有这些指令后,ax中的十六进制值是多少

mov ax, -4
imul ah
imul al
ANSWER: AX=0010
根据我的总结,在imul指令之前,ax的值应该是FFFC


imul
根据操作数的大小而不同
imul-ah
是有符号的乘法
AX=AL*ah
(无
DX
)。让我们一步一步来:

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

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

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

imul ah
imul al