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

在DEBUG.EXE中编写数字比较程序遇问题,求正确实现方案

DEBUG下实现输入两个数字并输出最大值的正确代码

原代码的核心错误

  • DOS中断int 21h的01号功能(字符输入回显),返回的输入字符ASCII码存在AL寄存器,不是DL,原代码搞反了存储逻辑
  • 输出字符应该用int 21h的02号功能(ah=02),原代码错误继续用01号输入功能,导致程序异常
  • COM程序不能直接用ret退出,必须调用DOS退出功能,否则会触发内存错误崩溃

正确的DEBUG操作代码序列

n prog.com
a 100
; 输入第一个数字,将ASCII码存入BL
mov ah, 01
int 21
mov bl, al

; 输入第二个数字,将ASCII码存入CL
mov ah, 01
int 21
mov cl, al

; 比较两个数字的ASCII码(数字ASCII连续,直接比较即可)
cmp bl, cl
jae 0110    ; 若第一个数更大/相等,跳转到输出第一个数的逻辑

; 输出第二个数
mov ah, 02
mov dl, cl
int 21
jmp 0115    ; 跳转到退出程序的逻辑

0110:
; 输出第一个数
mov ah, 02
mov dl, bl
int 21

0115:
; 调用DOS退出功能,返回系统
mov ah, 4c
int 21

保存并运行步骤

  1. 输入完上述汇编代码后,按Enter再按Ctrl+C退出汇编模式
  2. 执行r cx设置程序长度,输入25(对应上述代码的字节数)
  3. 执行w将程序写入磁盘
  4. 执行q退出DEBUG
  5. 在DOSBox中运行prog.com,输入两个数字后即可看到最大值输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:42:25