满意答案
hprdveyzvj
2013.11.28
采纳率:41% 等级:12
已帮助:11869人
不知道你说的“输入多个成绩”是什么意思,所以我就写了死循环。至于第一个条件,凡是不是0~100的均报错,比如不是合法的正数等。
dsegsegment
MsgInputdb0ah, 0dh, 'Input a score: ', '$'
MsgErrordb'Invalid Input!', '$'
BufInputdb5, ?, 5 dup( ? )
Gradedb'EDCBA', '$'
dsegends
csegsegment
assume ds:dseg, cs:cseg
BEGIN:
movax,dseg
movds,ax
Init:
leadx,MsgInput
movah,9
int21h
leadx,BufInput
movah,0ah
int21h
movdl,0ah
movah,2
int21h
movax,0
leabx,BufInput + 2
LoopCalc:
cmpbyte ptr[bx],0dh
jeCompare
cmpbyte ptr[bx],'0'
jbError
cmpbyte ptr[bx],'9'
jaError
subbyte ptr[bx],'0'
movcx,10
mulcx
movcx,0
movcl,[bx]
add ax,cx
incbx
jmpLoopCalc
Compare:
cmpax,100
jaError
movcl,10
divcl
cmpal,9
jbeNext1
moval,9
Next1:
cmpal,5
jaeNext2
moval,5
Next2:
subal,5
leabx,Grade
xlat
movdl,al
movah,2
int21h
jmpInit
Error:
leadx,MsgError
movah,9
int21h
jmpInit
movah,04ch
int21h
csegends
endBEGIN
10分享举报