当我用 'Int 21h/AH=09h' 打印内存时出现奇怪的符号

Strange symbols appear when I print memory with 'Int 21h/AH=09h"

我在 DOSBox 中使用 TASM、TLINK 和 TD(调试器)。

我最近尝试编写一个简单的 ASM 8086 程序,假设打印地址 0100h 处的值。当我打印结果时,我得到的输出类似于:

我的代码是:

.MODEL SMALL
.STACK
.DATA
.CODE
.STARTUP

MOV SI,0100H
MOV WORD PTR[SI],31
MOV DX,0
MOV AH,09H
MOV DX,[SI]
INT 21H

MOV AH,4CH
INT 21H

END

调用 21H 中断并将 AH 设置为 09H,将在寄存器 DX 中打印 $ 终止的字符串。在你的情况下 DX 包含 31H,这将指向(我假设)垃圾,这就是你打印随机符号的原因。

在调用打印系统调用之前,在数据部分创建要打印的字符串,并使 DX 寄存器指向它。