用汇编语言实现学生成绩统计分析

实验内容:

编制一个程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。
1、成绩分等部分采用分支结构,统计所有成绩则用循环结构完成,显示统计结果采用DOS功能调用。
2、统计学生成绩和显示统计结果两部分内容用子程序结构来完成。

DATA SEGMENT
STRING1 DB 'Please Input Score:','$' ;提示输入
STRING2 DB 'The Order From MAX To MIN:','$'
;输出排序从大到小
SCORE DW 60 DUP(0) ;分配存放空间
S5 DW 0 ;定义变量
S6 DW 0
S7 DW 0
S8 DW 0
S9 DW 0
S10 DW 0

DATA ENDS

STACK SEGMENT ;堆栈段
DW 64 DUP(0)
STACK ENDS

CODE SEGMENT ;代码段
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV DX,OFFSET STRING1 ;显示提示输入
MOV AH,09H
INT 21H

XOR BX,BX ;寄存器清零
XOR CX,CX
XOR SI,SI
XOR DI,DI

INPUT: MOV AH,1 ;输入一个字符
INT 21H
CMP AL,0DH ;是否为回车键
JZ OVER ;是就跳到OVER
CMP AL,20H ;是否为空格
JZ SAVE ;是就跳到SAVE
SUB AL,30H ;变为真数
MOV CL,4
SHL BX,CL ;左移四位,变为BCD码
ADD BL,AL
JMP INPUT

SAVE: MOV SCORE[SI],BX ;保存到SCORE中
ADD SI,2
INC DI
XOR BX,BX
JMP INPUT

OVER: MOV SCORE[SI],BX ;保存最后一个数据,并存放到SCORE中
INC DI
MOV DL,0AH
MOV AH,02H
INT 21H
MOV CX,DI
DEC CX
XOR BX,BX

COMP1: MOV SI,2 ;指向下一个数
MOV DX,CX

COMP2: MOV AX,SCORE[BX]
CMP AX,SCORE[BX+SI] ;比较前后两个数
JNC COMP3 ;小于就跳到COMP3
XCHG AX,SCORE[BX+SI] ;交换位置
MOV SCORE[BX],AX

COMP3: ADD SI,2 ;指向下一个数
DEC DX
JNZ COMP2
ADD BX,2 ;指向下一个数
LOOP COMP1

MOV DX,OFFSET STRING2
MOV AH,09H
INT 21H
SUB SI,SI ;把SI清零

OUT_PUT1:
MOV BX,SCORE[SI] ;输出百位数
MOV DL,BH
AND DL,0FH
ADD DL,30H
MOV AH,02H
INT 21H

MOV DL,BL ;输出十位数
MOV CL,4
SHR DL,CL
ADD DL,30H
MOV AH,02H
INT 21H

MOV DL,BL ;输出个位数
AND DL,0FH
ADD DL,30H
MOV AH,02H
INT 21H

MOV DL,20H ;输出空格
MOV AH,02H
INT 21H
ADD SI,2
DEC DI
OUT_PUT2:MOV BX,SCORE[SI] ;输出十位数
MOV DL,BL
MOV CL,4
SHR DL,CL
ADD DL,30H
MOV AH,02H
INT 21H

MOV DL,BL ;输出个位数
AND DL,0FH
ADD DL,30H
MOV AH,02H
INT 21H

MOV DL,20H ;输出空格
MOV AH,02H
INT 21H
ADD SI,2
DEC DI
JNZ OUT_PUT2

MOV CX,10 ;设置计数器为10
MOV BX,OFFSET SCORE

COMPARE: MOV AX,[BX]
CMP AX,60 ;与60比较
JL FIVE ;小于就跳到FIVE
CMP AX,70 ;与70比较
JL SIX ;小于就跳到SIX
CMP AX,80 ;与80比较
JL SEVEN ;小于就跳到SEVEN
CMP AX,90 ;与90比较
JL EIGHT ;小于就跳到EIGHT
CMP AX,100 ;与100比较
JNE NINE ;不为0就是90到99
INC S10 ;100时【S10+1】
JMP NEWDATA ;跳到NEWDATA
FIVE: INC S5 ;小于60时【S5+1】
JMP NEWDATA ;跳到NEWDATA
SIX: INC S6 ;大于等于60小于70时【S6+1】
JMP NEWDATA ;跳到NEWDATA
SEVEN: INC S7 ;大于等于70小于80时【S7+1】
JMP NEWDATA ;跳到NEWDATA
EIGHT: INC S8 ;大于等于80小于90时【S8+1】
JMP NEWDATA ;跳到NEWDATA
NINE: INC S9 ;大于等于90小于100时【S9+1】

NEWDATA: ADD BX,2 ;取下个数
LOOP COMPARE ;循环COMPARE

MOV AH,4CH ;返回DOS
INT 21H

CODE ENDS
END START
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-12-21

用汇编语言实现学生成绩统计分析

编制一个程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。

1、成绩分等部分采用分支结构,统计所有成绩则用循环结构完成,显示统计结果采用DOS功能调用。

2、统计学生成绩和显示统计结果两部分内容用子程序结构来完成。

如下即可:

第2个回答  2008-11-26
这题不难就是有点烦
第3个回答  2008-11-26
这题难度不小啊
相似回答