我正在通过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
时,程序没有停在那里。
我还试图按n
或s
。没有任何效果。
我的qemu设置:
qemu-system-i386 -localtime freedos.img -boot d -S -s
对于gdb:
gdb -q
target remote localhost:1234
set architecture i8086
为什么会这样?我错过了什么?
编辑:检查扩展中断。