我在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
答案 0 :(得分:3)
在21H
设置为AH
的情况下调用09H
中断,会在注册$
中打印DX
终止的字符串。在你的情况下,DX
包含31H
,它会指向(我假设)垃圾,这就是你打印随机符号的原因。
在调用打印系统调用之前,创建要在数据部分内打印的字符串,并使DX
寄存器指向它。