多字节的二进制加法程序
下面是实验题目:1.实验内容
将两个4字节长的二进制数相加,运算结果存放在相应结果单元中。
2.说明
首先应安排程序的结构,其中代码段和数据段是必须有的。代码段里实现数的相加,可用带
进位的加法指令;数据段中存放被加数、加数和结果单元这些数据。考虑到编程的方便,在定义加数和被加数时,将低位字节放到低地址,高位字节放在高地址。进行加法运算时,按照由低地址到高地址的顺序取得数据,而每一步运算的结果也按照低位放在低地,高位放在高地址的方式进行存储
说明看的有点蒙,就编了个:
DATAS SEGMENT
DATA1 DD 12345678H
DATA2 DD 0ABCDEF01H
DATA3 DW 2 DUP(0);此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV BP,0
LEA SI,DATA1 ;取两个数据的首地址
LEA DI,DATA2
MOV AX,[SI]
ADD AX,[DI] ;后四位相加
JC L ;判断是否进位
MOV 4[DATA3],AX ;后四位存入DATA3
MOV AX,0
K: MOV AX,4[SI] ;前四位相加
ADD AX,4[DI]
JMP J
L: MOV AX,1 ;有进位AX先加一
JMP K
J: MOV [DATA3],AX ;前四位存入DATA3
MOV AH,4CH
INT 21H
CODES ENDS
END START
估计错误的地方比较多,需要大修=v=,,,求高手帮指点下。