调试INT 13h

时间:2016-12-23 16:56:08

标签: assembly x86 gdb bootloader dos

我正在通过FreeDos OS的Boot Loader进行调试,直到我在中断13h指令后丢失。 我使用gdb和qemu。

gdb version: 7.11.1
qemu version: 2.5
FreeDos version: 1.2

我达到了这一点:

int 13h

然后我输入:

si (step instruction)

然后,当我检查指令指针时,我得到了这个:

add BYTE PTR [bx+si], al

add BYTE PTR [bx+si], al   

add BYTE PTR [bx+si], al

add BYTE PTR [bx+si], al

显然不应该出现这些指示。应该来了:

jb     0xf2

接下来的事情是,我无法摆脱这些苛刻的指示。它们会永远存在,但是当我键入c(继续)时,程序会继续正常运行。 我尝试了几件事,但没有成功: 在int 13h指令后设置断点,但是当我按下c时,程序没有停在那里。 我还试图按ns。没有任何效果。

我的qemu设置:

qemu-system-i386 -localtime freedos.img -boot d -S -s

对于gdb:

gdb -q
target remote localhost:1234
set architecture i8086

为什么会这样?我错过了什么?

编辑:检查扩展中断。

0 个答案:

没有答案