微机原理与技术实验四:子程序结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四:子程序设计
一、实验目的:掌握子程序结构,熟悉汇编上机环境。
二、实验内容:设有数组SCORE存放学生的成绩(0~100分),编写一个子程序统计0~59
分、60~69分、70~79分、80~89分、90~100分的人数,并分别存放到SCOREE、SCORED、SCOREC、SCOREB、SCOREA单元中。编写一个主程序与之配合使用。
三、实验步骤:
1、在“轻松汇编”环境下编写、编译和生成程序;
2、进入DEBUG界面,运行程序,观察SCOREE、SCORED、SCOREC、SCOREB、SCOREA 变量的值是否正确:
在DEBUG下运行程序:F9键
观察多个变量值:“Data”→“Add Watch”→“输入变量1”
“Data”→“Add Watch”→“输入变量2”
……
四、流程图与源程序:
DATA SEGMENT
SCORE DB 80,78,45,81,90,72,60,75
SCOREE DB 0
SCORED DB 0
SCOREC DB 0
SCOREB DB 0
SCOREA DB 0
DATA ENDS
STCK SEGMENT
DB 10 DUP(?)
STCK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STCK
START:
补全程序
MOV AH,4CH
INT 21H
;以下为子程序
COUNT PROC
补全程序
RET COUNT ENDP CODE ENDS
END START
主程序开始
设置地址指针指向SCORE 首地址设置循环次数=SCORE 元素个数
调成绩判断子程序地址指针加一循环次数减一
循环次数=0
N
返回DOS
Y
子程序开始
取当前地址指针所指向的元素
当前元素<90
SCOREA 加一
当前元素<80
SCOREB 加一
当前元素<70
SCOREC 加一
当前元素<60
SCORED 加一
SCOREE 加一
子程序返回
N
Y
N
Y
N
Y
N
Y
五、实验小结
说明:实验报告要包涵上述五项
DATA SEGMENT
SCORE DB 80,78,45,81,90,72,60,75 SCOREE DB 0 SCORED DB 0 SCOREC DB 0 SCOREB DB 0 SCOREA DB 0 DATA ENDS
STCK SEGMENT
DB 10 DUP(?) STCK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STCK START:
MOV AX,DATA
MOV DS,AX
LEA SI,SCORE
MOV CX,8
A1: CALL COUNT
INC SI
DEC CX
CMP CX,0
JNZ A1
MOV AH,4CH
INT 21H
COUNT PROC
MOV AL,[SI]
CMP AL,90
JNB A2
CMP AL,80
JNB A3
CMP AL,70
JNB A4
CMP AL,60
JNB A5
INC SCOREE
RET
A2: INC SCOREA
RET
A3: INC SCOREB
RET
A4: INC SCOREC
RET
A5: INC SCORED
RET
COUNT ENDP
CODE ENDS
END START