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

如何实现8086清屏后将光标移至新行以打印下一个函数

代码不生效的核心问题

  • 第一个致命错误:你在调用int 10h完成清屏(设置8025文本模式本身就会触发清屏)后,无参数调用了int 21h。此时ah寄存器的值还是之前设置的00h,对应int 21h的功能号是程序终止退出*,所以后续移动光标的代码完全没有被执行,程序直接就结束了。
  • 第二个潜在问题:直接用ret结束DOS程序的写法不通用,只有.com格式的程序或者栈结构符合要求的.exe程序才能正常返回,更稳妥的写法是调用DOS中断的退出功能。

修正后的可运行代码

; 8086 DOS下清屏+移动光标到左上角代码
mov ah, 00h    ; 功能号:设置显示模式
mov al, 02h    ; 显示模式:80*25 16色文本模式,调用后自动清屏
int 10h        ; 调用BIOS中断执行操作,删掉多余的int 21h

mov ah, 02h    ; 功能号:设置光标位置
mov bh, 00h    ; 页号:第0显示页
mov dx, 0000h  ; 光标位置:dh=行号0,dl=列号0,即左上角
int 10h        ; 调用BIOS中断执行操作

; 正常退出DOS程序
mov ah, 4ch
int 21h

验证说明

这段代码在MASM/TASM编译链接后,在DOSBox或者实模式DOS环境下运行可以正常完成清屏,并且光标定位到左上角。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:00:04