成绩等级划分8086汇编语言
时间: 2025-01-02 14:43:44 浏览: 11
### 使用8086汇编语言实现成绩等级划分
在8086汇编语言中,可以设计一个简单的程序来根据输入的成绩分数将其划分为不同的等级。下面是一个基本的示例程序:
```assembly
.model small
.stack 100h
.data
score db ? ; 存储成绩变量
grade_msg db 'Grade: $' ; 输出成绩等级的消息前缀
.code
main proc
mov ax, @data ; 初始化数据段寄存器
mov ds, ax
call input_score ; 调用子过程获取用户输入的成绩
call determine_grade ; 判断成绩对应的等级并显示出来
mov ah, 4Ch ; 结束程序返回DOS
int 21h
main endp
input_score proc ; 获取用户的键盘输入作为成绩数值
lea dx, prompt ; 加载提示信息地址到DX
mov ah, 9 ; DOS功能调用号设置为打印字符串
int 21h ; 执行中断服务请求
xor bx, bx ; 清零BX用于存储最终读取的结果
read_digit:
mov ah, 1 ; 准备接收单字符输入
int 21h ; 接收按键码放入AL
cmp al, 13 ; 如果按下了回车键则结束循环
je done_reading
sub al, '0' ; ASCII转成实际数字
cbw ; 字节扩展至字(处理可能的大于FFH的情况)
add bx, ax ; 累加当前位数到总分上
mov ax, 10
mul bx ; 计算下一位的位置偏移量
xchg ax, bx
jmp read_digit
done_reading:
mov [score], bl ; 把最后得到的有效成绩保存下来
ret
input_score endp
determine_grade proc
mov al, [score] ; 取得之前记录下的成绩值
cmp al, 90 ; 和优秀分数线比较
jae excellent
cmp al, 80 ; 和良好分数线比较
jae good
cmp al, 70 ; 和及格线对比
jae pass
fail: ; 不足70分视为不及格
lea dx, fail_msg
jmp display_result
pass:
lea dx, pass_msg
jmp display_result
good:
lea dx, good_msg
jmp display_result
excellent:
lea dx, exc_msg
display_result:
lea si, grade_msg
print_loop:
lodsb
cmp al, '$'
je exit_printing
mov dl, al
mov ah, 2
int 21h
jmp print_loop
exit_printing:
ret
determine_grade endp
prompt db 'Enter Score (0-100): $', 0dh, 0ah
exc_msg db 'Excellent!', 0dh, 0ah, '$'
good_msg db 'Good!', 0dh, 0ah, '$'
pass_msg db 'Pass.', 0dh, 0ah, '$'
fail_msg db 'Fail...', 0dh, 0ah, '$'
end main ; 定义程序入口点
```
此代码片段展示了如何通过8086汇编语言创建一个简单的学生评分系统[^1]。
阅读全文