汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)
生活随笔
收集整理的這篇文章主要介紹了
汇编: 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位。 8位乘法,16位乘法。</p>
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
如果是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中)。
?
?
總結
以上是生活随笔為你收集整理的汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中通过mkdir –p 能够创
- 下一篇: 怎样删除word里的形状