日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)

發布時間:2025/6/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。 本文鏈接:https://blog.csdn.net/m0_37564426/article/details/85563170 </div><!--一個博主專欄付費入口--><!--一個博主專欄付費入口結束--><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-4a3473df85.css"><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-4a3473df85.css"><div class="htmledit_views" id="content_views"><p class="cye-lm-tag">兩個相乘數,要么都是8位,要么都是16位。 &nbsp; 8位乘法,16位乘法。</p>

如果是8位,一個數字默認存放在al中,另外一個數字存放在其他8位寄存器中或者字節型內存單元中。

mul 8位寄存器 ? ? ? ? ? ? ? ;結果存放在ax中

mul byte ptr ds:[0] ? ? ? ? ;結果存放在ax中

?

如果是16位,一個數字默認存放在ax中,另外一個數字存放在其他16位寄存器中或者字型內存單元中。

mul 16位寄存器 ? ? ? ? ? ? ;結果存放在dx, ax中

mul word ptr ds:[0] ? ? ? ?;結果存放在dx, ax中

?

結果: ?8位乘法,得到一個16位數, ?結果存放在ax中

? ? ? ? ? 16位乘法,得到一個32位數, ?低16位存放在ax中,高16位存放在dx中

注意:有時候雖然是字的乘法,但是已經明確地知道乘積比較小,肯定不會大于2^16=65536,那么此時,雖然是字乘法,可能就用不到乘積的高16位(在dx中)了,而只是對乘積的低16位進行處理(在ax中)。

?

  • assume cs:code, ds:data, ss:stack
  • data segment
  • dd 0
  • data ends
  • stack segment stack
  • db 128 dup(0)
  • stack ends
  • code segment
  • start: mov ax, stack
  • mov ss, ax
  • mov sp, 128
  • mov di, 0
  • call init_reg
  • mov bx, 5 ; 參數
  • call get_cube ; 對參數進行處理
  • mov es:[di+0], ax ;call程序的返回值
  • mov es:[di+2], dx
  • mov ax, 4C00H
  • int 21H
  • ;================================ 切割邏輯
  • get_cube: push bx
  • mov ax, bx
  • mul bx
  • mul bx
  • pop bx
  • ret
  • ;=================================
  • init_reg: mov ax, data
  • mov ds, ax
  • mov es, ax
  • ret
  • code ends
  • end start
  • assume cs:code, ds:data, ss:stack
  • data segment
  • dw 11,22,33,44,55,66,77,88
  • dd 0,0,0,0,0,0,0,0
  • data ends
  • stack segment stack
  • db 128 dup(0)
  • stack ends
  • code segment
  • start: mov ax, stack
  • mov ss, ax
  • mov sp, 128
  • call init_reg
  • call number_cube
  • mov ax, 4C00H
  • int 21H
  • ;================================
  • number_cube:
  • mov cx, 8
  • mov si, 0
  • mov di, 16
  • cube: mov bx, ds:[si]
  • call get_cube
  • mov es:[di], ax
  • mov es:[di+2], dx
  • add si, 2
  • add di, 4
  • loop cube
  • ret
  • ;================================ 切割邏輯
  • get_cube: push bx
  • mov ax, bx
  • mul bx
  • mul bx
  • pop bx
  • ret
  • ;=================================
  • init_reg: mov ax, data
  • mov ds, ax
  • mov es, ax
  • ret
  • code ends
  • end start
  • ?

    總結

    以上是生活随笔為你收集整理的汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。