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

时间:2016-04-21 20:37:20

标签: assembly x86-16 tasm dosbox

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

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

enter image description here

我的代码是:

.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

1 个答案:

答案 0 :(得分:3)

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

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