从键盘录入10个学生成绩(0-100),录入完毕自动统计各分段的学生数。如果录入的不是0-100,则报错并重新输入。而且,按下ESC直接结束程序。之前没有对边界进行判断,结果造成了统计人数超过9以后就不能正常显示了此次加了边界判断,如果人数更大的话以此类推,若超过100则再另行处理。
include 一套工具.mac
data segment
buf db 10 dup(?)
w db 3 dup (?)
s6 db ?
s7 db ?
s8 db ?
s9 db ?
show db "Please input ten scores:$"
show1 db "The number of 0-59:$"
show2 db "The number of 60-79:$"
show3 db "The number of 80-89:$"
show4 db "The number of 90-100:$"
error1 db "Input error!$"
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
oustring show
mov bx,0
mov di,0
set1:
input
escexit al
ldjudge al
cmpzn al
and al,0fh
cmp bx,2
jg error
mov w[bx],al
inc bx
jmp set1
judge:
cmp bx,0
jz error
cmp bx,1
jz onebit
cmp bx,2
jz twobit
cmp w[0],1
jnz error
threedigit w
cmp al,100
jg error
jmp ret1
onebit:
onedigit w
jmp ret1
twobit:
twodigit