主题:求助 高手来帮帮忙 一道汇编题
wuangang
[专家分:0] 发布于 2007-04-25 11:50:00
从键盘输入n个学生的成绩(百分制),以0分作为结束标志,在屏幕上输出五分制成绩中各分数段人数(每个级别一行)。
PS:将成绩5分制分段我会做 但前面键盘输入确实有困难 麻烦哪位高手给段程序 谢谢
回复列表 (共2个回复)
沙发
wuangang [专家分:0] 发布于 2007-04-25 19:14:00
没人愿意帮忙吗?我肯定给分的呀
板凳
塞北江南 [专家分:1350] 发布于 2007-04-29 13:13:00
.model small
.stack
.data
score db 4,0,0,0,0
tishi db 10,13,'please input a score:$'
.code
.startup
begin:
mov dx,offset tishi ;显示提示信息
mov ah,9
int 21h
mov dx,offset score ;输入字串,最多3位
mov ah,10
int 21h
mov dl,10 ;换行
mov ah,2
int 21h
mov al,score[2] ;score[2]是第一个输入的字符的ASCI码
and al,0fh
cmp al,0 ;是0则结束程序
je over
cmp score[1],1 ;score[1],1 保存了输入的数字个数
je grade ;只输入1位则直接转到成绩评定,此时AL为成绩
mov bl,10 ;否则,该位乘以10
mul bl
and score[3],0fh
add al,score[3] ;再加上下一位数据
cmp score[1],3 ;如果输入的是3位数,则再乘以10再加上第三位数
jne grade
mul bl
and score[4],0fh
add al,score[4]
grade:
XOR AH,AH ;只用AL就可以表示100及其以内的数值
.if aX>=90
mov dl,'A'
.elseif aX>=80
mov dl,'B'
.elseif aX>=70
mov dl,'C'
.elseif aX>=60
mov dl,'D'
.else
mov dl,'E'
.endif
mov ah,2 ;显示等级字母
int 21h
jmp begin
over:
.exit 0
end
用MASM6.15汇编通过执行无误!
我来回复