求用汇编语言写“2个32位有符号数乘法”的程序
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:数学作业 时间:2024/06/23 12:39:05
求用汇编语言写“2个32位有符号数乘法”的程序
注明:有符号
注明:有符号
![求用汇编语言写“2个32位有符号数乘法”的程序](/uploads/image/z/1923372-36-2.jpg?t=%E6%B1%82%E7%94%A8%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80%E5%86%99%E2%80%9C2%E4%B8%AA32%E4%BD%8D%E6%9C%89%E7%AC%A6%E5%8F%B7%E6%95%B0%E4%B9%98%E6%B3%95%E2%80%9D%E7%9A%84%E7%A8%8B%E5%BA%8F)
我承认程序不是我写的~是小文写的~不过分数我代领了~哈哈哈哈哈
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
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
求用汇编语言写“2个32位有符号数乘法”的程序
汇编语言程序设计 用16位乘法指令完成32位无符号数的乘法(结果64位)使用MUL指令,完成双字无符号
汇编语言编程序一、 求两个32位有符号数DATA1和DATA2的和.若计算正确结果小于最小负数,则将最小负数存入SUM单
用汇编语言设计一个程序,求10个无符号数中的最大值.并将最大值存入变量MAX中
汇编语言有符号乘法指令
用汇编语言写一个筛选10有符号的数的最大数和最小数
汇编,有符号数乘法的符号位扩展
高分求汇编语言答案.1.设AX寄存器中有一个10位二进制数,编写程序,统计AX中“1”的个数,统计结果送入CX
汇编语言用8086指令集和寄存器做32位有符号数学运算
汇编语言,设ax bx cx中的数都是带符号数,下列程序求AX BX CX中最大值,结果在AX中,请写完整
用汇编语言编写一个程序,计算(X*Y-Z)/X的值.其中X,Y,Z均为16位带符号数,要求表达式的计算结果存放在数据段中
求masm下两个四位无符号十进制数乘法程序