作业帮 > 数学 > 作业

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

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:数学作业 时间:2024/06/23 12:39:05
求用汇编语言写“2个32位有符号数乘法”的程序
注明:有符号
求用汇编语言写“2个32位有符号数乘法”的程序
我承认程序不是我写的~是小文写的~不过分数我代领了~哈哈哈哈哈
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+2,cx
adc T2,dx
;-------同理
SUM:mov ax,T1+4
mov R+6,ax
mov ax,T2+4
add T1+2,ax
mov ax,T1+2
mov R+4,ax
mov ax,T2+2
adc T1,ax
mov ax,T1
mov R+2,ax
mov ax,T2
adc R,ax
;-------错位相加
mov ax,4C00H
int 21H
code ends
end start
原理图:
NA NA+2
× NB NB+2
——————————————————
T1 T1+2 T1+4
+ T2 T2+2 T2+4
——————————————————
R R+2 R+4 R+6