汇编语言乘法实现5位数乘以1位数

2020-10-28 综合 83阅读

以16位系统为例,5位数的范围是10000-99999,超出了16位寄存器能表达的最大值, 65535,所以,需要用双字表示,即DX:AX。最大99999 * 9 ,依然在双家的表达范围内。

; code below, z = x * y
dseg segment
x dw 84748   ; 5位数
y dw 9       ; 1位数
z dd 0       ; 双字
dseg ends
cseg segment
assume cs:cseg, ds:dseg
start:
    mov ax, dseg
    mov ds, ax
    xor  dx, dx  ;dx 清0
    mov ax, x
    mov bx, y
    mul bx     ;x * y -> DX:AX
    mov word ptr z, ax  ;低位在前
    mov word ptr z+2, dx;高位在后
    mov ah,4ch
    int 21h
cseg ends
end start
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com