pmtest7的调试,从dos返回到bochs

转载与看雪学院:http://bbs.pediy.com/showthread.php?t=116110
Xiilin:
我在看于渊的《Orange'S...》这本书,我调试一个程序时却出现了问题,程序做的事情是首先从实模式切换到保护模式,然后在保护模式下读取0x00500000地址的内存,然后显示出来。

我在Bochs虚拟机下的FreeDos系统上用debug32调试的这个程序,可只能调试到这里:

mov eax,cr0
or eax,1
mov cr0,eax ;调试到这一句时,FreeDos会重启


麻烦大家给我指点一下,我要怎么样才能继续调试下去?我想跟到保护模式的代码里。
--------------------------------------------------------------------------------
xiilin:
已解决,感谢天杀老大指点的方法。

在Bochs的配置文件里加上一句magic_break: enabled=1,然后在程序里加上一句xchg bx,bx,运行到这条指令时会断到Bochs调试器里。这样就可以继续调试下去了。

在Bochsrc_sample.txt里有提到过的,我居然没有仔细看。
---------------------------------------------------------------------------------
羽毛飘飘:
xiilin,你好!
我遇到了和你同样的问题,deug32调式有问题。
但是我用你说的方法试了但还是没能返回bochs的调试,下面是我的操作流程,您帮着给看看拿步出问题了。
1.修改bochsrc文件
在文件末尾增加“magic_break: enabled=1”
2.pmtest.asm文件中增加语句chg bx, bx,选了2个地方都没有成功
%include "pm.inc" ; 常量, 宏, 以及一些说明
;xchg bx, bx
org 0100h
;xchg bx, bx
jmp LABEL_BEGIN
3.启动bochs
bochs -f bochsrc
4.选择6
Please choose one: [6]
5.让bochs运行
<bochs:1> c 回车
6.在freedos中进入b盘,运行pmtest2.com
7.dos屏幕上显示处红色的打印字符串
未能成功的停在bochs中。
帮忙看看,我那里操作有问题阿?
------------------------------------------
羽毛飘飘:
谢谢!
谢谢回复!

问题找到了,原来是我没有把新编译生成的com文件拷贝到pm.img中。
比较低级的错误,惭愧。

posted on 2011-05-03 15:48  wanghj_dz  阅读(571)  评论(0编辑  收藏  举报

导航