- 11
- 0
- 约2.73万字
- 约 59页
- 2020-07-19 发布于天津
- 举报
微机原理软件实验
实验 1两个多位十进制数相加的实验
实验内容: 将两个多位十进制数相加,要求加数和被加数均以 ASCII 码形式各
自顺序存放以 DATA1和 DATA2为首的 5 个内存单元中(低位在前) ,结果送回
DATA1处。完整代码如下:
DATAS SEGMENT
;此处输入数据段代码
STRING1 DB input the first number: ,$
STRING2 DB 13,10,input the second number: ,$
STRING3 DB 13,10,the output is: ,$
DATA1 DB 6 DUP(00H),$
DATA2 DB 6 DUP (00H),$
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
1
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START :
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA SI,DATA1
LEA DI,DATA2
L0:
LEA DX,STRING1;打印字符串 STRING1
MOV AH,09
INT 21H
INPUT1: ;输入第一个数
MOV AH,01;输入字符至 AL 中
INT 21H
CMP AL, /
JE L1
MOV [SI],AL
INC SI
2
JMP INPUT1
L1:
LEA DX,STRING2 ;打印字符串 STRING2
MOV AH,09
INT 21H
INPUT2: ;输入第二个数
MOV AH,01;输入字符至 AL
INT 21H
CMP AL, /
JE L2
MOV [DI],AL
INC DI
JMP INPUT2
L2:
MOV SI,0
CLC ;清空进位标志位 CF
MOV CX,6
3
PLUSE: ;相加
;SUB DATA1[SI],30H
;SUB DATA2[SI],30H
;这里不能使用这两条指令 ,因为如果 DATA1[5]=00H,00H-30H 需要借位相减,使
CF=1
MOV AL,DATA1[SI]
ADC AL,DATA2[SI]
AAA ;加法调整指令,可使两个 ASCII数直接相加
MOV DATA1[SI],AL ;和赋给 DATA1[SI]
INC SI
LOOP PLUSE
L3:
LEA DX,STRING3 ;打印字符串 STRING3
MOV AH,09
INT 21H
MOV CX,6
MOV SI,6
SHOW:
4
DEC SI
CMP DATA1[SI],00H
JE SHOW
SHOW2:
MOV DL,DATA1[SI]
ADD DL,30H
MOV AH,02
INT 21H
CMP SI,0
JE L4
DEC
原创力文档

文档评论(0)