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

汇编程序中CR(ASCII 13)回车符无法正常输出的问题排查

问题分析与解决

核心错误原因

你代码里的CR被放在了字符串的$终止符之后:

TestW db "THIS IS A TEST!$", CR

而PCMAC.INC里的_PutStr宏是遇到$就停止输出,所以$后面的CR(包括后来加的LF)根本不会被输出,自然看不到回车换行的效果。

修正方案

把CR、LF放到$终止符前面,让_PutStr输出字符串内容时一并执行控制字符:

INCLUDE PCMAC.INC
.model small
.stack 100
.data
CR EQU 13
LF EQU 10  ; DOS环境下通常CR+LF组合才能实现完整换行
TestW db "THIS IS A TEST!", CR, LF, "$"
Instruct db "This program will average numbers entered until you type [q]. ", CR, LF, "$"

.code
NumAverage PROC
mov ax, @data
mov ds, ax

_PutStr TestW
_PutStr Instruct

_Exit
NumAverage ENDP
END NumAverage

补充说明

DOS环境里,单独用CR只会让光标回到行首,后续输出会覆盖当前行内容;单独用LF只会让光标下移一行,不会回到行首。只有CR+LF组合,才能实现光标回到下一行开头的标准换行效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:30:00