彙編 mul乘法指令

2021-09-06 10:07:19 字數 2093 閱讀 8350

兩個相乘數,要麼都是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: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

retcode 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

retcode ends

end start

80X86彙編 mul 乘法指令

使用 mul 做乘法的時候,注意以下兩點 格式如下 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 的結果的低 1...

組合語言mul指令 跟著開源軟體學組合語言 計算器

今天我們分享兩個關於計算器的開源軟體,這兩個開源軟體都是用組合語言編寫,學習這兩個軟體有助於我們理解相關的指令和資料轉換的方法。rdebug的計算器 第乙個開源軟體來自rdebug的部落格 這個計算器軟體完全使用彙編編寫,執行在dos下。執行效果如下 這個軟體沒有依賴第三方庫,僅使用了dos中斷用於...

乘法 除法彙編指令總結

乘法指令的反彙編 a 5 imul eax,dword ptr a 5 當變數與不是 2的冪的數相乘時,三變數 a b mov eax,dword ptr a imul eax,dword ptr b 當兩個都是變數相乘時,兩變數 a 8 mov eax,dword ptr a 當變數與 2的冪相乘...