You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DOS下x86汇编编写成绩等级计算器逻辑错误求助

问题排查
  • 输入获取逻辑错误:连续两次调用int 21h的01h号输入功能,第一次读取的十位ASCII值会被第二次读取的个位值覆盖al寄存器,你最终用来比较的al存储的是个位数字,自然判断逻辑完全失效,这是无论输入什么都打印A的核心原因。
  • 无效赋值:你新增的mov bl,01没有承接第二次输入的结果,两次输入的内容没有被正确存储区分。
  • 比较逻辑的判断对象错误:你需要判断的是十位数字是否大于等于8,而非个位数字。
修复后的完整实现

以下代码完整实现两位数字输入、大于等于80分打印A等级的逻辑:

.model small
.stack 100h
.data
Msg1 db 'Enter your total marks from 0 to 99: $'
EightyPlus db 'Congratulation you have got an A $'
.code
start:
mov ax,@data
mov ds,ax

; 打印输入提示
mov ah,09h
lea dx,Msg1
int 21h

; 打印换行回车
mov ah,02h
mov dl,13
int 21h
mov dl,10
int 21h

; 读取十位数字,存入bl
mov ah,01h
int 21h
mov bl,al

; 读取个位数字,存入al
mov ah,01h
int 21h

; 打印换行回车
mov ah,02h
mov dl,13
int 21h
mov dl,10
int 21h

; 判断十位是否>=8(即分数>=80)
cmp bl, '8'
jl exit

; 符合条件打印A等级提示
mov ah,09h
lea dx,EightyPlus
int 21h

exit:
mov ah,4ch
int 21h

end start

内容的提问来源于stack exchange,提问作者Ghulam Mustafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:54:03