在汇编中的乘法运算,如何使用2个寄存器的全部结果? [英] MUL operation in assembly, how can we use the full result from 2 registers?

查看:0
本文介绍了在汇编中的乘法运算,如何使用2个寄存器的全部结果?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我的MUL bxbx包含任何值,则结果将在dx和ax之间拆分,那么我如何使用该结果?

我认为使用eax可以修复它,但不行,因为我们无法访问16个高位。

我们可以声明32位变量,但如何使用它?

推荐答案

这里有一个很好的解释:

https://www.tutorialspoint.com/assembly_programming/assembly_arithmetic_instructions.htm

  1. 当两个字节相乘时−
被乘数位于AL寄存器中,乘数为一个字节 在存储器中或在另一个寄存器中。(16位)产品在AX中。高阶 乘积的8位存储在AH中,低位8位是 存储在AL中。

  • [AL] x [8-bit src] = [AH][AL]
  1. 当两个单字值相乘时−
被乘数应该在AX寄存器中,并且乘数是 存储器或另一个寄存器中的字。例如,对于一条指令 与MUL DX一样,您必须将乘数存储在DX中,并将被乘数存储在DX中 在斧头上。该产品为32位。

  • [AX] x [16-bit src] = [DX][AX]

生成的产品是一个双字,它需要两个寄存器。 高位(最左边)部分存储在DX中, 低位(最右侧)部分存储在AX中。

  1. 当两个双字值乘以−时
当两个双字值相乘时,被乘数应为 在EAX中,乘数是存储在内存或 另一个登记处。生成的(64位)产品存储在edX:EAX中 寄存器,即高位32位被存储在EDX中 寄存器和低位32位存储在EAX寄存器中。

  • [EAX] x [32-bit src] = [EDX][EAX]

这篇关于在汇编中的乘法运算,如何使用2个寄存器的全部结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆