gpt4 book ai didi

程序集 imul 签名

转载 作者:行者123 更新时间:2023-12-02 08:10:14 30 4
gpt4 key购买 nike

谢谢帮助,我的问题是关于从下面的代码中收到的 ax 值?

mov al,22h
mov cl,0fdh
imul cl
  • 真机结果:ff9a
  • 我的预期:00:9a(通过二进制相乘)

第一个数字是 22h 所以它的小数点后 34 已经是无符号的第二个数字是二进制的 fd 就像 11111101所以它的签名意味着它像 -3

所以 22* -3 是 66;和 -66 在签名 9a

那为什么开头有ff

最佳答案

imul cl AX = AL * CL,从 8 位带符号输入生成完整的 16 位带符号产品。

为什么您期望高位字节为零?这对签名或未签名没有意义。

0x009a 作为带符号的 2 的补码 16 位整数表示 +154

0xff9a 作为带符号的 2 的补码 16 位整数表示 0xff9a - 0x10000 = -102。这是 -3 * 34 的正确结果。对于 8 位有符号数,该数字在 -128..127 范围内,因此高 8 位 (0xff) 只是 2's complement sign extension低 8 位。


its already unsigned

不,它是正向的。有符号与无符号是您如何解释这些位的问题。在带符号的解释中,数字可以是正数、负数或零。不过,符号位 = 0 的数字是非负数。

关于程序集 imul 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47946278/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com