小编mmo*_*moe的帖子

x86装配GAS部门

我不太确定分区在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寄存器的值,我该如何处理?

谢谢!

编辑:上面的代码产生一个浮点异常

x86 assembly att

2
推荐指数
1
解决办法
7150
查看次数

标签 统计

assembly ×1

att ×1

x86 ×1