在 intel 指令中,idiv(integer divsion) 表示有符号除法。
我得到了 的结果idiv
,但我不太明白结果。
- 例子
0xffff0000 idiv 0xffff1100
- 我的错误预测
只要我知道,quotient
应该是0,remainder
应该是0xffff0000,因为......
0xffff0000 / 0xffff1100 = 0
0xffff0000 % 0xffff1100 = 0xffff0000
- 然而,结果是……
之前idiv
eax 0xffff0000 # dividend
esi 0xffff1100 # divisor
edx 0x0
后idiv
eax 0xfffeedcc # quotient
edx 0x7400 29696 # remainder
- 问题。
结果是我无法预料的价值。
有人可以解释一下已签名的除法(idiv
)吗?
- 附加。
这里有更多关于idiv
.
idiv
使用 eax 寄存器作为源寄存器。
作为执行的结果,商存储在 eax 中,余数存储在 edx 中。