广东工业大学微机实验报告 三 分支、循环及子程序设计实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三分支、循环及子程序设计实验
一、实验目的
1)了解分支、循环、子程序等程序的基本结构
2)掌握分支程序、循环结构程序的设计和调试方法
3)掌握子程序的定义和调试方法
二、实验内容
数据块的传送
题目:设计一数据块的搬移程序。使用数据串操作指令实现
程序运行结果:
0208:0200 00 01 02 03 04 05 06 07
0208:0208 08 09 10 11 12 13 14 15
三、编程练习
题目:设数据段SCORE单元开始连续存放着20个学生的成绩,编写程序统计<60,60~69,70~79,80~89,>90分数段的人数,并把统计结果存放到从TOT开始的数据块中。
(数据64H,41H,5DH,55H,52H,51H,44H,45H,47H,48H,4DH,4FH,3CH,3FH,40H,41H,33H,56H, 59H,30H)
程序清单:
STACK SEGMENT STACK ;堆栈段
DW 128 DUP(?) ;注意这里只有128个字节
STACK ENDS
DATA SEGMENT ;数据段
;定义数据段
ORG 1000H
SCORE DB 64H,61H,5DH,55H,52H,51H,44H,45H,47H,48H
DB 4DH,4FH,3CH,3FH,40H,41H,33H,56H,59H,30H
ORG 1030H
TOT DB 5 DUP(?)
DATA ENDS
CODE SEGMENT ;代码段
ASSUME CS: CODE, DS: DATA
START: MOV AX,DATA ;初始化
MOV DS, AX
;代码
MOV CX, 20 ;学生个数
MOV SI, 0 ;SI指向学生成绩
MOV DI, 0 ;DI指向统计结果
AA: MOV AL, SCORE[SI] ;取一个成绩
CMP AL, 90
JC N1 ;若不大于90分,则跳转到N1
INC TOT [DI] ;若大于90分, 90分人数加1
JMP LAST
N1: CMP AL, 80
JC N2 ;若不大于80分,则跳转到N2
INC TOT[DI+1] ;若大于80分, 80分人数加1
JMP LAST
N2: CMP AL, 70
JC N3 ;若不大于70分,则跳转到N3
INC TOT[DI+2] ;若大于70分, 70分人数加1
JMP LAST
N3: CMP AL,60
JC N4 ;若不大于60分,则跳转到N4
INC TOT[DI+3] ;若大于60分, 60分人数加1
JMP LAST
N4: INC TOT[DI+4] ; 60分以下人数加1
LAST: INC SI
LOOP AA ;循环,直到所有成绩都统计完
MOV AX,4C00H ;退出程序
INT 21H
CODE ENDS
END START
运行结果:
0208:1030:03 05 04 06 02
程序流程图如下:
四、实验心得
通过本次实验,了解了分支、循环、子程序等程序的基本结果,通过编程练习,我掌握了分支程序和循环程序的设计和调试方法。这次实验相比于前一次实验,更有难度,要用到的指令的条数也多了以来,不过事先在宿舍已经基本调试好了,所以,做起来还不是太难。