隐式的除法中 商和余数去哪里了

8位除法:

如果被除数是8位的,它必须放在AX寄存器的低8位(即AL)中。

除数可以是一个8位的寄存器或内存值。

除法操作后,商存放在AL中,余数存放在AH中。

16位除法:

如果被除数是16位的,它必须放在AX寄存器中。

但对于32位的被除数(由DX:AX表示,其中DX是高16位,AX是低16位),除法操作需要DX寄存器来存放被除数的高16位。

除数可以是一个16位的寄存器或内存值(对于32位被除数,除数也相应地是16位或32位,但div指令只直接处理16位除数;对于32位除数,需要使用idiv指令)。

对于16位被除数和除数,商存放在AX中,余数存放在DX中。

对于32位被除数和16位除数(使用idiv指令进行有符号除法),商的高16位存放在DX中,商的低16位存放在AX中;余数仍然在DX中(但注意,此时DX中的值是除法操作后的余数,而不是之前的被除数高16位)。

32位除法:

使用idiv指令进行32位除法时,被除数由EDX:EAX表示(EDX是高32位,EAX是低32位)。

除数可以是16位或32位,但idiv指令在这里处理的是32位被除数和32位(通过符号扩展得到的)除数。

商的高32位存放在EDX中,商的低32位存放在EAX中。

余数(如果有的话,对于idiv指令来说,余数总是存在于EDX中,但在执行完idiv后,它表示的是除法操作后的余数,而不是之前的被除数高32位)也存放在EDX中,但在获取商之后,通常不会单独使用余数寄存器,而是根据上下文来决定如何处理余数。

需要注意的是,div指令用于无符号除法,而idiv指令用于有符号除法。在选择使用哪个指令时,应该根据操作数的符号来确定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值