;给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90 分以上为A,80-89
;分为B,70-79 分为C,60-69分为D,60 分一下为E。
;要求:提示输入一分数score;
;键盘输入,Enter 键结束输入,并换行显示结果。
;
;用MASM5.0编译通过
data segment
S1 DB 0DH,0AH,'Enter score: $'
S2 DB 0DH,0AH,'The grade is: $'
D1 DB 0 ;输入的成绩
data ends
code segment
main proc far
assume cs:code,ds:data
start:
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AH,9 ;提示输入成绩
MOV DX,OFFSET S1
INT 21H
RE_I:
MOV AH,07H ;输入数字(用不回显方式)
INT 21H
CMP AL,0DH
JNE N1
mov ah,9
mov dx,offset S2
int 21h
MOV AL,D1
CMP AL,90
JB X1
MOV DL,'A'
JMP DISP
X1:
CMP AL,80
JB X2
MOV DL,'B'
JMP DISP
X2:
CMP AL,70
JB X3
MOV DL,'C'
JMP DISP
X3:
CMP AL,60
JB X4
MOV DL,'D'
JMP DISP
X4:
MOV DL,'E'
DISP:
MOV AH,2
INT 21H
JMP EXIT
N1:
CMP AL,'0' ;过滤掉数字外的字符
JB RE_I
CMP AL,'9'
JA RE_I
MOV DL,AL
PUSH AX
MOV AH,2 ;显示输入的数字
INT 21H
MOV AL,D1
MOV AH,0
MOV BL,10
MUL BL
POP BX
SUB BL,30H
ADD AL,BL
MOV D1,al
Jmp RE_I
EXIT:
RET
main endp
code ends
end start
单片机还是8086?