我不太确定分区在x86汇编中是如何工作的(GAS AT&T语法).我想做的是划分两个长,然后将商乘以除数,看看新数是否等于初始数(n/m*m = n).
movl %ebx, %eax
movl %ecx, %edx
idivl %edx
imull %ebx, %edx
cmp %edx, %ebx
je .equal
Run Code Online (Sandbox Code Playgroud)
上面的代码是我做分工的片段.ebx和ecx是我想要分割的两个计数器,eax寄存器用作除数是否正确?所以,当我写idivl%edx时,我将edx与eax分开,并得到最接近0的整数?像7/2 = 3?我读了一个地方,这个商存储在edx寄存器中,余数存储在ah寄存器中,但我还被告知,商存储在eax寄存器中,余数存储在edx寄存器中,这让我感到困惑.
虽然这里的主要问题是:我想将ebx寄存器的值除以ecx寄存器的值,我该如何处理?
谢谢!
编辑:上面的代码产生一个浮点异常