生活随笔
收集整理的這篇文章主要介紹了
汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。 本文鏈接:https://blog.csdn.net/m0_37564426/article/details/85563170 </div><!--一個(gè)博主專欄付費(fèi)入口--><!--一個(gè)博主專欄付費(fèi)入口結(jié)束--><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">兩個(gè)相乘數(shù),要么都是8位,要么都是16位。 8位乘法,16位乘法。</p>
如果是8位,一個(gè)數(shù)字默認(rèn)存放在al中,另外一個(gè)數(shù)字存放在其他8位寄存器中或者字節(jié)型內(nèi)存單元中。
mul 8位寄存器 ? ? ? ? ? ? ? ;結(jié)果存放在ax中
mul byte ptr ds:[0] ? ? ? ? ;結(jié)果存放在ax中
?
如果是16位,一個(gè)數(shù)字默認(rèn)存放在ax中,另外一個(gè)數(shù)字存放在其他16位寄存器中或者字型內(nèi)存單元中。
mul 16位寄存器 ? ? ? ? ? ? ;結(jié)果存放在dx, ax中
mul word ptr ds:[0] ? ? ? ?;結(jié)果存放在dx, ax中
?
結(jié)果: ?8位乘法,得到一個(gè)16位數(shù), ?結(jié)果存放在ax中
? ? ? ? ? 16位乘法,得到一個(gè)32位數(shù), ?低16位存放在ax中,高16位存放在dx中
注意:有時(shí)候雖然是字的乘法,但是已經(jīng)明確地知道乘積比較小,肯定不會(huì)大于2^16=65536,那么此時(shí),雖然是字乘法,可能就用不到乘積的高16位(在dx中)了,而只是對(duì)乘積的低16位進(jìn)行處理(在ax中)。
?
assume cs:code, ds:data, ss:stack data segmentdd 0data ends stack segment stackdb 128 dup(0)stack ends code segment start: mov ax, stackmov ss, axmov sp, 128 mov di, 0 call init_reg mov bx, 5 ; 參數(shù) call get_cube ; 對(duì)參數(shù)進(jìn)行處理 mov es:[di+0], ax ;call程序的返回值mov es:[di+2], dx mov ax, 4C00H int 21H;================================ 切割邏輯get_cube: push bxmov ax, bxmul bxmul bx pop bxret ;=================================init_reg: mov ax, datamov ds, ax mov es, axret code ends end start
assume cs:code, ds:data, ss:stack data segmentdw 11,22,33,44,55,66,77,88dd 0,0,0,0,0,0,0,0data ends stack segment stackdb 128 dup(0)stack ends code segment start: mov ax, stackmov ss, axmov sp, 128 call init_reg call number_cube mov ax, 4C00H int 21H ;================================number_cube:mov cx, 8mov si, 0mov di, 16 cube: mov bx, ds:[si] call get_cubemov es:[di], axmov es:[di+2], dx add si, 2 add di, 4 loop cube ret;================================ 切割邏輯get_cube: push bxmov ax, bxmul bxmul bx pop bxret ;=================================init_reg: mov ax, datamov ds, ax mov es, axret code ends end start
?
總結(jié)
以上是生活随笔為你收集整理的汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。