80X86汇编 mul 乘法指令

Posted fanlumaster

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了80X86汇编 mul 乘法指令相关的知识,希望对你有一定的参考价值。

使用 mul 做乘法的时候, 注意以下两点:

  • 两个相乘的数: 两个相乘的数, 要么都是 8 位, 要么都是 16 位. 如果是 8 位, 一个默认放在 AL 中, 另一个放在 8 位 reg 或内存字节单元中; 如果是 16 位, 一个默认再 AX 中, 另一个放在 16 位 reg 或内存子单元中.
  • 结果: 如果是 8 位乘法, 结果默认放在 AX 中; 如果是 16 位乘法, 结果高位默认在 DX 中存放, 低位在 AX 中存放.

格式如下:

mul reg
mul 内存单元

内存单元可以用不同的寻址方式给出, 比如:

mul byte ptr ds:[0]

含义: (ax) = (al) * ((ds) * 16 + 0);

mul word ptr [bx+si+8]

含义: (ax) = (ax) * ((ds) * 16 + (bx) + (si) + 8) 的结果的低 16 位.
(dx) = (ax) * ((ds) * 16 + (bx) + (si) + 8) 的结果的高 16 位.

例:

(1) 计算 100 * 10.

100 和 10 小于 255, 可以做 8 位乘法, 程序如下.

mov al,100
mov bl,10
mul bl

结果: (ax) = 1000(03E8H)

(2) 计算 100 * 10000

100 小于 255, 可 10000 大于 255, 所以必须做 16 位乘法, 程序如下.

mov ax,100
mov bx,10000
mul bx

结果: (ax) = 4240H, (dx) = 000FH    (F4240H = 1000000)

参考: 节选自王爽汇编语言


以上是关于80X86汇编 mul 乘法指令的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向x86 汇编 ( add / sub / mul / div 数值运算指令 | xor / not / sal / sar / shl / shr 位运算指令 )

《80X86汇编语言程序设计教程》十九 操作系统类指令与输入输出保护

汇编--算术运算类指令

x86汇编指令详解

《80X86汇编语言程序设计教程》十 实模式与保护模式的切换实例

用于复数乘法的汇编代码/AVX 指令。 (GCC 内联汇编)