实验九 综合程序设计
设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个子程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。
源程序:
DATA SEGMENT
S1 DB 'below 60:','$' S2 DB '60~69: ','$' S3 DB '70~79: ','$' S4 DB '80~89: ','$' S5 DB '90~99: ','$' S6 DB '100:','$'
XX DB 76,69,84,90,73,88,99,63,100,80 COUNT EQU $-XX
NUMBER DB 6 DUP(0) ;存放每个数据段的人数 ENTER DB 0DH,0AH,'$' ;回车换行 DATA ENDS
STACK SEGMENT STACK DB 10 DUP(?) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX, DATA MOV DS,AX CALL GRADE CALL SHOW MOV AH,4CH INT 21H
;统计各分数段人数的子程序 GRADE PROC NEAR
MOV CX,COUNT LEA SI,XX
LEA DI,NUMBER LP: MOV BL,[SI] CMP BL,60
JL BELOWSIX CMP BL,70 JL SIX CMP BL,80 JL SEVEN CMP BL,90 JL EIGHT CMP BL,100 JL NINE
INC BYTE PTR[DI+5] NEXT: INC SI
XOR BX,BX
LOOP LP JMP ENDGRADE BELOWSIX: INC BYTE PTR[DI] JMP NEXT
SIX: INC BYTE PTR[DI+1] JMP NEXT
SEVEN: INC BYTE PTR[DI+2] JMP NEXT
EIGHT: INC BYTE PTR[DI+3] JMP NEXT
NINE : INC BYTE PTR[DI+4] JMP NEXT
ENDGRADE: RET GRADE ENDP
;将结果显示到屏幕上的子程序 SHOW PROC NEAR XOR SI,SI
MOV SI,OFFSET NUMBER LEA DX,S1 MOV AH,09H INT 21H XOR DX,DX MOV DL,[SI] ADD DL,30H MOV AH,02H INT 21H
LEA DX,ENTER MOV AH,09H INT 21H
LEA DX,S2 MOV AH,09H INT 21H XOR DX,DX MOV DL,[SI+1] ADD DL,30H MOV AH,02H INT 21H
LEA DX,ENTER MOV AH,09H INT 21H
LEA DX,S3 MOV AH,09H INT 21H XOR DX,DX MOV DL,[SI+2] ADD DL,30H MOV AH,02H INT 21H
LEA DX,ENTER MOV AH,09H INT 21H
LEA DX,S4 MOV AH,09H INT 21H XOR DX,DX MOV DL,[SI+3] ADD DL,30H MOV AH,02H INT 21H
LEA DX,ENTER MOV AH,09H INT 21H
LEA DX,S5 MOV AH,09H INT 21H XOR DX,DX MOV DL,[SI+4] ADD DL,30H MOV AH,02H
INT 21H
LEA DX,ENTER MOV AH,09H INT 21H
LEA DX,S6 MOV AH,09H INT 21H XOR DX,DX MOV DL,[SI+5] ADD DL,30H MOV AH,02H INT 21H
RET SHOW ENDP
CODE ENDS
END START
运行结果:
实验心得体会:
本次试验加强了我的实践操作能力,原本看似浅显简单的理论知识,一搬到实践运用上就显得不那么简单了,往往容易犯低级错误,最终在老师和同学的帮助下完成了本次为时几周的微机实验。我觉得这样的实验很有必要,它不仅加强了实践能力,更进一步帮助自己理解了平时上课可能理解不了的知识点,丰富了课堂教学内容,提高了我对微机系统,汇编语言的兴趣,真是让我受益匪浅。
参考文献:
(1)微机原理实验指导书,东华大学信息信息科学与技术学院,2008年10月; (2)80X86/Pentium微型计算机原理及应用(第3版),电子工业出版社。