汇编语言用8086指令集和寄存器做32位有符号数学运算

来源:百度知道 编辑:UC知道 时间:2024/07/07 19:15:32
用户输入两个有符号数,从-2147483648到2147483647范围的,运算结果要判断溢出,8086的原生寄存器只有16位,所以需要用到拼凑,计算加减乘除就好,很急,要严格按照要求来的,求源代码。
每2小时看一次,能用立刻给分

输入输出的ASC转换我想你是会是,所以就不写了。我只提供32位运算程序。以下程序是试算通过的。

1、在数据段定义4个运算变量
;===============================
;32位运算变量
;===============================
data4 dw ?
data3 dw ?
data2 dw ?
data1 dw ?

2、以下是加、减、乘、除的4个子程序
;*******************************
;32位运算
;*******************************
;===============================
;32位符号数的加法运算
;入: DXAX=32位操作数1
; CXBX=32位操作数2
;出: DXAX=两操作数的和
; OF=1: 溢出
; OF=0: 正常
;===============================
subn_add32 proc near
add ax,bx
adc dx,cx
ret
subn_add32 endp
;===============================
;32位符号数的减法运算
;入: DXAX=32位操作数1
; CXBX=32位操作数2
;出: DXAX=操作数1-操作数2的差
; OF=1: 溢出
; OF=0: 正常
;===============================
subn_sub32 proc near
sub ax,bx
sbb dx,cx
ret
subn_sub32 endp
;===============================
;32位符号数的乘法运算
;入: DXAX=32