实验八 子程序设计实验报告
通信0704 070900813 韩一帆
一.实验目的
1、掌握程序设计方法,合理划分层次
2、掌握子程序的调用与返回的方法
3、了解子程序的嵌套与递归
二.实验内容与要求
编制一程序,要求键入一个班的学生成绩,并存放于50字的ERADE数组中,然后根据ERADE中的成绩,把学生名次填入50字的RANK数组中,再按学号顺序把名次从终端上显示出来。
程序代码:
DATA SEGMENT
GRADE DW 50 DUP(?)
RANK DW 50 DUP(?)
COUNT DW 0
MESSAGE DB 'TYPE IN THE SCORE$'
FLAG DB -1
RESULT DB 40 DUP(?)
STRING DB 0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN:PUSH DS
XOR AX,AX
MOV AX,DATA
MOV DS,AX
CALL INPUT
CALL RK
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
CALL OUTPUT
MOV AH,01H
INT 21H
INPUT PROC NEAR
MOV DX,OFFSET MESSAGE
MOV AH,09H
INT 21H
LEA SI,GRADE
XOR DX,DX
I:
INC COUNT
MOV AH,01H
INT 21H
SUB AL,30H
MOV DL,64H
MUL DL
MOV BX,AX
MOV AH,01H
INT 21H
SUB AL,30H
MOV DL,0AH
MUL DL
ADD BX,AX
MOV AH,01H
INT 21H
SUB AL,30H
ADD BL,AL
MOV [SI],BX
ADD SI,2
MOV AH,01H
INT 21H
CMP AL,20H
JE I
RET
INPUT ENDP
RK PROC NEAR
MOV CX,COUNT
LEA SI,GRADE
LEA DI,RANK
MOVE:MOV AX,[SI]
MOV [DI],AX
ADD SI,2
ADD DI,2
LOOP MOVE
MOV BX,COUNT
LP1:CMP FLAG,0
JE R
DEC BX
MOV CX,BX
MOV SI,0
MOV FLAG,0
LP2:MOV AX,GRADE[SI]
CMP AX,GRADE[SI+2]
JLE NEXT
XCHG AX,GRADE[SI+2]
MOV GRADE[SI],AX
MOV FLAG,-1
NEXT:ADD SI,2
LOOP LP2
JMP LP1
R:MOV CX,COUNT
LEA DI,RANK
A:MOV BX,COUNT
LEA SI,GRADE
B:MOV AX,[DI]
CMP [SI],AX
JE C
ADD SI,2
DEC BX
JMP B
C:MOV [DI],BX
ADD DI,2
LOOP A
RET
RK ENDP
OUTPUT PROC NEAR
XOR AX,AX
XOR BL,BL
LEA SI,RANK
MOV CX,COUNT
D:
LEA DI,RESULT
MOV AX,[SI]
MOV BL,64H
DIV BL
ADD AL,30H
MOV BYTE PTR[DI],AL
INC DI
XOR AL,AL
XCHG AL,AH
MOV BL,0AH
DIV BL
ADD AL,30H
MOV BYTE PTR[DI],AL
INC DI
ADD AH,30H
MOV BYTE PTR[DI],AH
INC DI
MOV BYTE PTR[DI],','
INC DI
MOV BYTE PTR[DI],'$'
MOV DX,OFFSET RESULT
MOV AH,09H
INT 21H
ADD SI,2
LOOP D
RET
OUTPUT ENDP
CODE ENDS
END MAIN
三.实验心得
通过这次实验让我掌握了程序设计方法,合理划分层次,同时掌握了子程序的调用与返回的方法,并且了解了子程序的嵌套与递归。
第二篇:《经典规范C语言程序设计》实验报告(第八章)
《高级语言程序设计》实验报告
班级: 学号: 姓名: 成绩:
实验日期: 年 月 日
实验题目: 实验八结构体与链表程序设计
实验目的:
实验内容:(包括算法说明:用文字或流程图说明;程序清单;运行结果:原始数据、相应的运行结果和必要的说明。)
原始数据、相应的运行结果和必要的说明。
原始数据、相应的运行结果和必要的说明。
分析与思考 :(调试过程及调试中遇到的问题及解决办法;调试程序的心得与体会)