【问题标题】:DOSBox: debug.exe reads file - processes commands incorrectlyDOSBox:debug.exe 读取文件 - 错误地处理命令
【发布时间】:2016-03-26 01:20:06
【问题描述】:

我正在尝试在 64 位系统上使用带有 debug.exe 的 DOSBox。如果我手动输入命令,它工作得很好。当我重定向来自文件的输入时:

debug < [file]

它不起作用。在除第一行之外的每一行上,它都会显示类似以下的错误:

DOSBox 最终会挂起并崩溃。有没有办法解决这个问题?

我试图作为命令处理的输入文件是:

a 100
jmp 145
db 'Hello, World!', 0D, 0A, 'Press any key to continue . . .$'

a 145
mov ah, 09
mov dx, 102
int 21
mov ah, 08
int 21
int 20

rcx
100
n hello.com
w
q

【问题讨论】:

  • 将文本复制到文件并将其通过管道传输到 debug.com 对我来说非常适合,创建一个打印消息的 hello.com

标签: assembly dosbox x86-16


【解决方案1】:

我可以重现您在这种情况下看到的行为:

  • Windows 和 Linux 上的 DOSBox 0.74
  • DEBUG.EXE 从 Windows XP 复制到 DOSBox
  • 来自不同版本的 MS-DOS 的 DEBUG.EXE 会导致问题,包括意外挂起。有关另一个相关问题,请参阅此 Stackoverflow question

我从FreeDOS 中找到了一个可以按预期工作的DEBUG.COM 版本。我已经让DEBUG.COM 可以从我的网站下载。或者,您可以从 Softpedia 下载 ZIP File 并提取 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!

【讨论】:

    【解决方案2】:

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

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

    100{CR][LF] jmp 145[CR][LF]....等等

    我使用 Scite 中的一个选项将 EOL 字符单独更改为 [CR],得到

    100{CR] jmp 145[CR]....等等

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

    DEBUG.COM 处理任一 EOL 序列都不会出现故障,因此使用它是有意义的,尤其是使用它的扩展功能。但是似乎可以使用 DEBUG.EXE,通过此修复,FWIW。 Scite 编辑器是一个简洁的工具。

    【讨论】:

      【解决方案3】:

      我发现在 Dosbox 中为 Debug 运行脚本文件时遇到了同样的问题。 但我找到了另一个编辑器:Notepad2。运行大大小小的并改变颜色以突出显示汇编字。 不过必须使用调试版本 1.25。

      【讨论】:

        【解决方案4】:

        比你迈克尔·佩奇。我正在尝试一切以获取 MS-DEBUG 的 FreeDos 克隆的输出以保存到文本文件中。但阻碍输出重定向的不是路径、速度或内存分配。这确实是换行和光标返回的组合。我很快写了一个程序来取出光标返回并留下换行符。它现在重定向!我还可以取出换行符并让光标返回,并且 DEBUG 也会重定向到文件。小故障是我必须在 DosBox 窗口之外访问 Windows 或关闭 DosBox 窗口,以便输出的 DEBUG 代码在目录列表中可见。

        这就是我将 DEBUG 输出重定向到文件的方式:

        调试game.lst

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-26
          • 1970-01-01
          • 1970-01-01
          • 2021-09-01
          相关资源
          最近更新 更多