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)

參考: 節選自王爽匯編語言


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM