当前位置:文档之家› 实验五 分支程序设计

实验五 分支程序设计

实验五分支程序设计
一、实验要求和目的
1.熟悉汇编语言程序设计结构;
2.熟悉汇编语言分支程序基本指令的使用方法;
3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。

二、实验内容与步骤
1. 实验内容
在当前数据段中DATA1开始的顺序80个单元中,存放着80个同学某门功课的考试成绩(0-100)。

编写程序统计>=90分,80-89分,70-79分,60-69分以及<60分的人数。

并将结果放到同一数据段的DATA2开始的5个单元中。

2. 实验步骤
(1)预习分支程序设计的方法,根据实验内容,画出流程图;
(2)利用EDIT或其他编辑软件,编写汇编源程序,取名为“ch5-1.ASM”;
(3)汇编、连接该源程序,产生“ch5-1.EXE”文件;
(4)对“ch5-1.EXE”文件进行调试运行:利用DEBUG的T命令或G命令和D命令查看数据区,看结果是否正确。

三、实验要求
(1)画出程序流程图。

开始
[DI ]+1
>=90?
Y
N
Y
>=80?[DI+1]+1
N
[DI+2]+1
>=70?
Y
N
Y
[DI+3]+1
>= 60?
N
[DI+4]+1
N>=0?
Y
结束
(2)列出程序清单,加上适量注释。

DATAS SEGMENT
DATA1 DB 20,55,45,90,72,66,42,80,92,90,95,96,97,98,99,91,96,97,99
DATA2 DB 5 DUP(0);统计结果:》=90,80~89,70~79,60~69,《60
DATAS ENDS
;
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS
MOV DS,AX
MOV CX,80;统计人数送入CX
LEA SI,DATA1 ;si指向学生成绩
LEA DI,DATA2 ;di指向统计结果
AGAIN:
MOV AL,[SI];取一个学生的成绩
CMP AL,90 ;大于90分吗?
JC NEXT1 ;若不大于,则继续判断
INC BYTE PTR[DI];否则90分以上的人数加一
JMP STO;转循环控制处理
NEXT1:CMP AL,80
JC NEXT2
INC BYTE PTR[DI+1]
JMP STO
NEXT2:CMP AL,70
JCNEXT3
INC BYTE PTR[DI+2]
JMP STO
NEXT3:CMP AL,60
JC NEXT4
INC BYTE PTR[DI+3]
JMP STO
NEXT4:INC BYTE PTR[DI+4] STO:INC SI
LOOP AGAIN
MOV DL,[DI]
AND DL,0FH
ADD DL,37H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
(3)记录实验结果。

相关主题