求用汇编语言写“2个32位有符号数乘法”的程序

来源:百度知道 编辑:UC知道 时间:2024/06/04 17:02:12
注明:有符号

我承认程序不是我写的~是小文写的~不过分数我代领了~哈哈哈哈哈

assume cs:code,ds:data

data segment
NA dw 0F321H,09AFCH
NB dw 08818H,0301DH
;-------第一个字是等待相乘的数的高16位,第二个是低十六位
T1 dw 0,0,0
T2 dw 0,0,0
;-------32位数乘以16位数不可能大于48位,所以分配3个字
R dw 0,0,0,0
;-------32位数乘以32位数不可能大于64位,所以为结果分配4个字
data ends

code segment
start:mov ax,data
mov ds,ax
;-------初始化段寄存器
Step1:mov ax,NA+2
mov bx,NB+2
mul bx
mov T1+4,ax
mov cx,dx
;-------Number A 的低16位乘以 Number B 的低十六位,结果存入T1+4
;进位存入CX
mov ax,NA
mov bx,NB+2
mul bx
mov T1+2,ax
add T1+2,cx
adc T1,dx
;-------Number A 的高16位乘以 Number B 的低十六位,结果存入T1+4
;结果存入T1+2,将T1+2与上一次相乘的进位相加存入T1+2
;将第二次相乘的进位带符号相加入 T1(前一位的相加可能产生进位)
Step2:mov ax,NA+2
mov bx,NB
mul bx
mov T2+4,ax
mov cx,dx
;-------同理
mov ax,NA
mov bx,NB
mul bx
mov T2+2,ax
add T2