汇编: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中
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
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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。