我正在尝试将我的字符串保存到汇编中的文件中,但它给了我这个奇怪的输出“ver 2.40(各种特殊字符)”
这就是我的所作所为:
mov ah,09
mov dx,200
int 21
int 20
e 200 "Test$"
n test.com
r cx
:0009
w
q
它成功地保存它并且当我不退出程序并使用“g”时也可以正常运行但是当我“q”并尝试运行test.com时它会给我输出我提到的输出。
答案 0 :(得分:2)
我认为您正在使用DEBUG.EXE。
在e 200 "Test$"
执行d 200
之后。您会看到内存转储从偏移量200开始。这看起来像:
16C7:0200 54 65 73 74 24 00 00 00-00 00 00 00 00 00 00 00 Test$...........
16C7:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
16C7:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
16C7:0230 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
16C7:0240 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
16C7:0250 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
16C7:0260 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
16C7:0270 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
现在计算偏移量,直到达到24
:200,201,202,203,204 - 您希望将内存从偏移100h存储到204h,这是105h字节(204h-100h + 1 )。
此值将存储在CX
:
r cx
:0105
使用w
编写CX
个字节。
答案 1 :(得分:1)
int 20
不是我想不到的问题。 cx
中的9不足以将代码写入100(大概)并将字符串写为200.我认为您还需要w 100
。如果这不是DEBUG,请原谅我。
答案 2 :(得分:0)
我的DOS书中提到了int 20h
这是在DOS V1上终止DOS程序的标准方法。随着 介绍DOS函数
4Ch
和31h
这不再是 除非必须维护,否则建议终止程序的方法 与DOS V1系统的兼容性。
我建议您使用int 21h
函数AH = 4Ch
并将AL
设置为返回码。