在汇编中的乘法运算,如何使用2个寄存器的全部结果? [英] MUL operation in assembly, how can we use the full result from 2 registers?
本文介绍了在汇编中的乘法运算,如何使用2个寄存器的全部结果?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我的MUL bx
bx包含任何值,则结果将在dx和ax之间拆分,那么我如何使用该结果?
我认为使用eax可以修复它,但不行,因为我们无法访问16个高位。
我们可以声明32位变量,但如何使用它?
推荐答案
这里有一个很好的解释:
https://www.tutorialspoint.com/assembly_programming/assembly_arithmetic_instructions.htm
被乘数位于AL寄存器中,乘数为一个字节 在存储器中或在另一个寄存器中。(16位)产品在AX中。高阶 乘积的8位存储在AH中,低位8位是 存储在AL中。
- 当两个字节相乘时−
[AL] x [8-bit src] = [AH][AL]
被乘数应该在AX寄存器中,并且乘数是 存储器或另一个寄存器中的字。例如,对于一条指令 与MUL DX一样,您必须将乘数存储在DX中,并将被乘数存储在DX中 在斧头上。该产品为32位。
- 当两个单字值相乘时−
[AX] x [16-bit src] = [DX][AX]
生成的产品是一个双字,它需要两个寄存器。 高位(最左边)部分存储在DX中, 低位(最右侧)部分存储在AX中。
当两个双字值相乘时,被乘数应为 在EAX中,乘数是存储在内存或 另一个登记处。生成的(64位)产品存储在edX:EAX中 寄存器,即高位32位被存储在EDX中 寄存器和低位32位存储在EAX寄存器中。
- 当两个双字值乘以−时
[EAX] x [32-bit src] = [EDX][EAX]
这篇关于在汇编中的乘法运算,如何使用2个寄存器的全部结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文