dosbox masm 输入以及调试

Posted

技术标签:

【中文标题】dosbox masm 输入以及调试【英文标题】:dosbox masm input along with debug 【发布时间】:2018-03-20 12:53:50 【问题描述】:

我正在使用 DOSBox MASM 来学习汇编语言。但是,我想在调试的同时提供输入。也就是说,我想逐行执行我的程序并尽快提供输入

INT 21H

来了。我正在调试

afdebug test.exe

但是一旦看到

MOV AH,01H
INT 21H

调试只是在 INT 21H 之后跳过并且不提示任何屏幕接受输入。

这是万一的程序:

.MODEL SMALL
        .STACK 64
        .DATA
MSG DB "ENTER A CHARACTER:$"
ORG 0030H
LOL DB ?
        .CODE
            MOV AX,@DATA
            MOV DS,AX
            LEA DX,MSG
            MOV AH,09H
            INT 21H
            MOV AH,01H
            INT 21H
            MOV LOL,AL
            MOV AH,4CH
            INT 21H
        END

【问题讨论】:

【参考方案1】:

几天前我遇到了这个问题,我终于解决了。我调试我的代码使用指令t

执行一条指令,然后显示所有寄存器的内容,所有标志的状态,以及Debug接下来将执行的指令的解码形式。

在DosBox中,我发现INT 21H之后,下一条指令是STI,根据wikipedia

STI 指令通过设置 IF 来启用中断。

所以在STI的指令之后,你可以接受输入。

您可以访问https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc722863(v=technet.10)的其他详细信息以了解有关调试说明的更多信息。

【讨论】:

【参考方案2】:

我通过以下方法解决了我的问题 我认为中断标志在调试模式下被重置,所以调用 int 21h 什么都不做。“如果中断标志被重置 (0),微处理器将无法识别任何中断请求并将忽略它们。” 我尝试的是在调用任何中断之前更改了我的代码并包含STI。(STI 代表设置中断标志) 现在,当我在调试模式下运行应用程序时,我可以提供输入

【讨论】:

以上是关于dosbox masm 输入以及调试的主要内容,如果未能解决你的问题,请参考以下文章

dosbox,masm的挂载

汇编 之 win10 下安装dosbox 和 MASM

在 macOS 上使用 dosbox 的 MASM 中的 ExitProcess 错误

Mac OX环境下DOSBox汇编环境的搭建

在win10下配置DOSBOX和masm

win10 x64下dosbox和masm5.0配置教程