微机实验 两个多位十进制数相加的实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 两个多位十进制数相加的实验
一、实验目的
1. 学习数据传送和算术运算指令的用法。
2. 熟悉在PC机上建立、汇编、连接、调试和运行8088汇编语言程序的过程。
二、实验内容
将两个多位十进制数相加,要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。附加题要求将加法过程显示与屏幕。
同学可以自己设计程序也可对代码段进行填空以及问答来完成程序。(附加题范例在第二页)
;该程序完成54321+54321=108642的多位十进制加法运算,和存放与DAT3
DATA SEGMENT
DAT1 DB'12345';问一个多位十进制数各位是以何种顺序存放于内存的。
DAT2 DB'12345';个位存放于高地址或者为低地址。
DAT3 DB 6 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA BX,DAT1
LEA SI,DAT2
LEA DI,DAT3
MOV CX,5
CLC ;为什么要加入这条指令
L1: MOV AL[BX]
ADC AL,[SI] ;BYTE PTR[BX]+[SI]+CF→AL 例‘1’+‘1’+0= 62H→AL
__________;填空________________; AL=02H
PUSHF;为什么要加入pushf popf这两条指令
OR AL,30H;为什么要加入这条指令
POPF
MOV [DI],AL
__________;填空________
__________;填空________
__________ ;填空________
LOOP L1
JNC L2
MOV [DI],31H
INC DI
hlt
CODE ENDS
END START
三、程序框图(见下页)
附加题1范例
;该程序完成54321+54321=108642的多位十进制加法运算,和存放与DAT3并显示于屏幕DATA SEGMENT
DAT1 DB'12345';问一个多位十进制数各位是以何种顺序存放于内存的。
DAT2 DB'12345'
DAT3 DB 6 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA BX,DAT1
LEA SI,DAT2
LEA DI,DAT3
MOV CX,5
CLC
L1: MOV AL[BX]
ADC AL,[SI]
;填空________________
PUSHF;为什么要加入pushf popf这两条指令
OR AL,30H;为什么要加入这条指令
POPF
MOV [DI],AL
;填空________
;填空________
;填空________
LOOP L1
JNC L2
MOV [DI],01H
;下面是附加显示
L2: ADD [DI],30H
INC DI
PUSH DI ;分析此时DI指向和的哪一位?
PUSH SI
PUSH BX
POP SI
DEC SI ;为什么要减一
MOV CX,5
CALL DISP
MOV DL,'+'
MOV AH,2
INT 21H
;填空_________
DEC SI
MOV CX,5
CALL DISP
MOV DL,'='
MOV AH,2
INT 21H
POP SI
DEC SI
MOV CX,;______填空
CALL DISP
HLT
;disp入口参数SI为显示字符串的末偏移地址以及显示字符串的个数CX
;DISP以倒序的方式逐个显示一个多位十进制数的
DISP PROC
L3: MOV DL,[SI]
MOV AH,2
INT 21H
;填空_____________
LOOP L3
;填空________
DISP ENDP
CODE ENDS
附加题2:
程序中变量如下数据段所定义,D1-D4为用ASCII字符串表示的十进制数字(说明:低地址为高的权位如DA1字符串表示一千两百三十四),完成D1-D4的累加并存入D5 DATA SEGMENT
D1 DB ‘1234’
D2 ‘DB ‘2234’
D3 DB ‘3234’
D4 DB ‘5345’
D5 DB 5 DUP(0)
DATA ENDS
附加题3:
程序中变量如下数据段所定义,D1-D4为用ASCII字符串表示的十进制数字(说明:低地址为高的权位如DA1低地址为十位,高地址为个位),每个字符串以0DH结束。要求将D1-D4转换为数值形式存入DA1-DA4(说明:’34’十进制数字符串转换后DA4为20H
DATA SEGMENT
D1 DB ‘16’,0DH
D2 ‘DB ‘123’,0DH
D3 DB ‘2344’, 0DH
D4 DB ‘55345’,0DH