使用emu8086完成以下问题•成绩评级判断器,给定Score输出评级 •当Score>=90时,输出A; •当90>Score>=75时,输出B; •当75>Score>=60时,输出C; •当60>Score时,输出D; •加分项: •交互UI; •Score⽀持浮点 •当Score>100或Score<0时提示异常
时间: 2024-01-22 22:21:04 浏览: 162
以下是使用emu8086汇编语言完成的成绩评级判断器,包含交互UI和异常提示功能:
```
;成绩评级判断器
;给定Score,输出评级
;当Score>=90时,输出A;
;当90>Score>=75时,输出B;
;当75>Score>=60时,输出C;
;当60>Score时,输出D;
;加分项:
;交互UI;
;Score支持浮点
;当Score>100或Score<0时提示异常
.model small
.stack 100h
.data
score db ?
msg db '请输入成绩(0~100):$'
msg_err db '成绩输入错误,请重新输入!$'
msg_a db '评级为A!$'
msg_b db '评级为B!$'
msg_c db '评级为C!$'
msg_d db '评级为D!$'
.code
main proc
mov ax, @data
mov ds, ax
;显示输入提示信息
lea dx, msg
mov ah, 09h
int 21h
;读取用户输入的成绩
mov ah, 01h
int 21h
sub al, 30h ;将ASCII码转换为数字值
cmp al, 10 ;判断是否为数字
ja input_error ;如果输入不是数字,跳转到输入错误处理
;读取小数点
mov ah, 01h
int 21h
cmp al, 2Eh ;判断是否为小数点
jne input_error ;如果不是小数点,跳转到输入错误处理
;读取小数部分
mov ah, 01h
int 21h
sub al, 30h ;将ASCII码转换为数字值
cmp al, 10 ;判断是否为数字
ja input_error ;如果输入不是数字,跳转到输入错误处理
;计算成绩
mov bl, al ;保存小数部分
mov ah, 01h
int 21h
sub al, 30h ;将ASCII码转换为数字值
cmp al, 10 ;判断是否为数字
ja input_error ;如果输入不是数字,跳转到输入错误处理
mov cl, al ;保存整数部分
mov al, bl ;恢复小数部分
add al, 10 ;将小数部分加上10,变成0~100的整数部分
adc cl, 0 ;加上进位
cmp cl, 100 ;判断是否超过最大值
ja input_error ;如果超过最大值,跳转到输入错误处理
cmp cl, 0 ;判断是否小于最小值
jb input_error ;如果小于最小值,跳转到输入错误处理
;判断评级
cmp cl, 90
jge output_a
cmp cl, 75
jge output_b
cmp cl, 60
jge output_c
jmp output_d
input_error:
;显示错误提示信息
lea dx, msg_err
mov ah, 09h
int 21h
jmp main ;重新输入成绩
output_a:
;显示评级信息
lea dx, msg_a
mov ah, 09h
int 21h
jmp exit
output_b:
;显示评级信息
lea dx, msg_b
mov ah, 09h
int 21h
jmp exit
output_c:
;显示评级信息
lea dx, msg_c
mov ah, 09h
int 21h
jmp exit
output_d:
;显示评级信息
lea dx, msg_d
mov ah, 09h
int 21h
jmp exit
exit:
mov ah, 4ch
int 21h
main endp
end main
```
阅读全文