Assembly DOSBox:debug.exe读取文件-错误处理命令

Assembly DOSBox:debug.exe读取文件-错误处理命令,assembly,dosbox,x86-16,Assembly,Dosbox,X86 16,我正在尝试在64位系统上使用DOSBox和debug.exe。如果我手动输入命令,它工作得非常好。当我使用以下命令重定向文件中的输入时: debug < [file] 我可以重现您在该场景中看到的行为: Windows和Linux上的DOSBox 0.74 Windows XP中的DEBUG.EXE已复制到DOSBox 来自不同版本MS-DOS的DEBUG.EXE将导致问题,包括意外挂起。有关另一个相关问题,请参见此 我从中找到了一个版本的DEBUG.COM,它可以正常工作。我可以从

我正在尝试在64位系统上使用DOSBox和
debug.exe
。如果我手动输入命令,它工作得非常好。当我使用以下命令重定向文件中的输入时:

debug < [file]

我可以重现您在该场景中看到的行为:

  • Windows和Linux上的DOSBox 0.74
  • Windows XP中的DEBUG.EXE已复制到DOSBox
  • 来自不同版本MS-DOS的DEBUG.EXE将导致问题,包括意外挂起。有关另一个相关问题,请参见此
我从中找到了一个版本的
DEBUG.COM
,它可以正常工作。我可以从我的网站上下载。或者,您可以从Softpedia下载并提取
DEBUG.COM

当我运行
DEBUG.COM
时,我得到以下信息:

S:\>debug.com <hello.asm
-a 100
0BFB:0100 jmp 145
0BFB:0102 db 'Hello, World!', 0D, 0A, 'Press any key to continue . . .$'
0BFB:0131
-a 145
0BFB:0145 mov ah, 09
0BFB:0147 mov dx, 102
0BFB:014A int 21
0BFB:014C mov ah, 08
0BFB:014E int 21
0BFB:0150 int 20
0BFB:0152
-rcx
CX 0000
:100
-n hello.com
-w
Writing 00100 bytes
-q

S:\>hello
Hello, World!
S:\>debug.com你好
你好,世界!

在DosBox 0.74中存在与DEBUG.EXE脚本重定向相同的问题。发现在重定向到DEBUG.EXE时,可以通过将脚本文件中的行尾字符从[CR][LF]更改为[CR]来修复此问题

将文件粘贴到Scite编辑器并查看行尾字符显示如下:

a 100{CR][LF] jmp 145[CR][LF]……等等

我在Scite中使用了一个选项,将EOL字符单独更改为[CR],从而获得

a 100{CR] jmp 145[CR]……等

已保存该文件,并且能够将其重定向到DEBUG.EXE,没有问题。 不确定[CR][LF]为什么会导致DEBUG.EXE出现问题,但希望这能有所帮助


DEBUG.COM处理任何一个EOL序列都没有问题,因此使用它是有意义的,尤其是它的扩展功能。但是,使用DEBUG.EXE似乎可以解决这个问题,比如FWIW。Scite编辑器是一个很好的工具。

我发现在Dosbox中运行脚本文件进行调试也存在同样的问题。 但我发现了另一个编辑器:Notepad2。运行得很好,也很小,并改变颜色以突出显示汇编语言。
但是我必须使用debug 1.25版。

比你Michael Petch更重要。我一直在尝试将MS-debug的FreeDos克隆输出保存到文本文件中。但阻止输出重定向的不是路径、速度或内存分配。事实上是换行和光标返回的组合。我很快编写了一个程序我需要取出游标返回并离开换行符。它现在可以重定向!我还可以取出换行符并离开游标返回,并且调试重定向到文件。小问题是我必须访问DosBox窗口之外的窗口或关闭DosBox窗口,以便输出的调试代码在目录列表中可见

以下是我将调试输出重定向到文件的方式:


DEBUGgame.lst

将文本复制到一个文件中,并将其传输到DEBUG.com中,这对我来说非常有效,创建了一个hello.com来打印消息
S:\>debug.com <hello.asm
-a 100
0BFB:0100 jmp 145
0BFB:0102 db 'Hello, World!', 0D, 0A, 'Press any key to continue . . .$'
0BFB:0131
-a 145
0BFB:0145 mov ah, 09
0BFB:0147 mov dx, 102
0BFB:014A int 21
0BFB:014C mov ah, 08
0BFB:014E int 21
0BFB:0150 int 20
0BFB:0152
-rcx
CX 0000
:100
-n hello.com
-w
Writing 00100 bytes
-q

S:\>hello
Hello, World!