先不管楼主的代码是否正确,按题目的要求,存放成绩,统计,平均分别是GRADE,LEVEL和AVER,像这样..
GRADE DB 56,78,46,75,89,56,46,85,46,93
GRADE_LEN EQU $ - OFFSET GRADE ;学生个数,依GRADE中数目,可弹性加减
LEVEL DB 5 DUP (?) ;分别代表 >=90, >=80, >=70 , >=60 , 少于60
AVER DB ?
;最好加上一个评核标准,这样就不用改代码,任何评核标准改变,直接改这儿
STANDARD DB 90,80,70,60,0
楼主的代码太累赘,理想的代码应该是简单和弹性,而不是写死,尤其避免直接在代码中加入资料.
核心代码大概是这样.....
mov ax,0 ;初始化
mov cx,GRADE_LEN ;学生数目
mov si,0 ;初始化
mov dx,0 ;初始化
next:
mov bx,0 ;初始化
mov al,grade[si]
next1:
cmp al,standard[bx] ;和评核标准比较
jae next4
inc bx ;下一个评核标准
jmp short next1
next4:
inc level[bx] ;bx的可能值是0,1,2,3,4,根据bx,加对应的统计
add DX,ax ;累加
inc si ;下一个学生
loop next ;回圈
mov ax,dx ;取累加
mov cl,GRADE_LEN ;学生数目
div cl ;计算平均
mov AVER,al ;存
至此,基本要求完成,其余留回楼主好了.
( 注:代码未经编译,若有错误应该不难修正)
GRADE DB 56,78,46,75,89,56,46,85,46,93
GRADE_LEN EQU $ - OFFSET GRADE ;学生个数,依GRADE中数目,可弹性加减
LEVEL DB 5 DUP (?) ;分别代表 >=90, >=80, >=70 , >=60 , 少于60
AVER DB ?
;最好加上一个评核标准,这样就不用改代码,任何评核标准改变,直接改这儿
STANDARD DB 90,80,70,60,0
楼主的代码太累赘,理想的代码应该是简单和弹性,而不是写死,尤其避免直接在代码中加入资料.
核心代码大概是这样.....
mov ax,0 ;初始化
mov cx,GRADE_LEN ;学生数目
mov si,0 ;初始化
mov dx,0 ;初始化
next:
mov bx,0 ;初始化
mov al,grade[si]
next1:
cmp al,standard[bx] ;和评核标准比较
jae next4
inc bx ;下一个评核标准
jmp short next1
next4:
inc level[bx] ;bx的可能值是0,1,2,3,4,根据bx,加对应的统计
add DX,ax ;累加
inc si ;下一个学生
loop next ;回圈
mov ax,dx ;取累加
mov cl,GRADE_LEN ;学生数目
div cl ;计算平均
mov AVER,al ;存
至此,基本要求完成,其余留回楼主好了.
( 注:代码未经编译,若有错误应该不难修正)