当我用 '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
寄存器指向它。
我在 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
寄存器指向它。