汇编: mul乘法指令
生活随笔
收集整理的這篇文章主要介紹了
汇编: mul乘法指令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
兩個相乘數,要么都是8位,要么都是16位。 ? 8位乘法,16位乘法。
如果是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中
?
assume cs:code, ds:data, ss:stackdata segmentdd 0 data endsstack segment stackdb 128 dup(0) stack endscode segmentstart: mov ax, stackmov ss, axmov sp, 128mov di, 0call init_regmov bx, 5 ; 參數call get_cube ; 對參數進行處理mov es:[di+0], ax ;call程序的返回值mov es:[di+2], dx mov ax, 4C00Hint 21H ;================================ 切割邏輯 get_cube: push bxmov ax, bxmul bxmul bxpop bxret;================================= init_reg: mov ax, datamov ds, axmov es, axretcode endsend start assume cs:code, ds:data, ss:stackdata segmentdw 11,22,33,44,55,66,77,88dd 0,0,0,0,0,0,0,0 data endsstack segment stackdb 128 dup(0) stack endscode segmentstart: mov ax, stackmov ss, axmov sp, 128call init_regcall number_cube mov ax, 4C00Hint 21H;================================ number_cube:mov cx, 8mov si, 0mov di, 16cube: mov bx, ds:[si]call get_cubemov es:[di], axmov es:[di+2], dxadd si, 2add di, 4loop cuberet ;================================ 切割邏輯 get_cube: push bxmov ax, bxmul bxmul bxpop bxret;================================= init_reg: mov ax, datamov ds, axmov es, axretcode endsend start?
總結
以上是生活随笔為你收集整理的汇编: mul乘法指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编:call指令的应用
- 下一篇: oracle:表空间使用率,表空间扩容