在Intel指令集中,idiv(整数除法)表示有符号除法。
我得到了idiv
的结果,但是对结果不太理解。
- 例子
0xffff0000 idiv 0xffff1100
- 我的错误预测
据我所知,商
应该是0,余数
应该是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中。