bochs调试DOS下程序

DOS下的程序如果进入到保护模式正常的工具是无法调试的!(如tddebugger等!)而大家都知道Bochs可以的bochdbg具有调试系统的功能。用它来调试DOS下的小程序也是可以的!经过一番学习基本学会了调试方法:

准备阶段:

1.下载bochs的最新版本(网上可以下到,bochs是开源的哦~

2.安装virtual PC,并在上面安装PC-DOSPC-DOS有一个1.44MBimg文件!

3.对自己的程序进行修改。

在程序开始处加入如下代码:(这是NASM编译,需要MASM请自行更改)

          jmpseg   equ   40h      ; 定义一个常量jmpseg ,其值等于40h             

              mov      ax,40h          ;

              mov    ds,ax                 ;令这个常量40h为数据段

              xor       si,si

              mov       ax,[ds:si]        ;

              push       ax       ; 把这个数据段起始处第一个字节保存下来(压入堆栈)

            mov      byte [ds:si],0cbh  ;改写这个位置的值为 retf

              push      cs               ;向堆栈中压入retf返回后的段地址

              push          back        ; 向堆栈中压入retf返回后的IP

              db      0eah              ;以定义数据的形式在内存中定义jmp 0x40:0指令,

              dw      0                  ;远跳转到0x40:0处,这个地址中就是retf

              dw      jmpseg

              back:                     ;执行retf后,返回,将弹出栈中的CSIP,刚好来到

              pop      ax                ; 标号back

              mov      [ds:si],ax             ;再恢复0x40:0处原来的值, 

4.IMG文件设置为DOS的软驱。将自己需要调试的程序放到DOS的共享文件夹下(virtual PC 2007设置DOS共享文件夹有点麻烦建议大家用virtual PC 5)然后把程序拷贝到IMG文件

COPY Z:/TEST.COM A:/ (假设我的需要调试程序为TEST.COM

Bochs配置阶段:

安装bochs时有一个选项为安装liunix Demo选择安装

D:/Program Files/Bochs-2.4.1/dlxlinux目录下将hd10meg.img删除

在准备阶段做好的IMG文件复制到该目录下,并重新命名为hd10meg.img

RUN.BAT里的内容改为:

cd "d:/Program Files/Bochs-2.4.1/dlxlinux"

../bochsdbg-q -f bochsrc.bxrc

(因为bochsdbg才具有调试功能)

双击RUN.BAT启动调试

<bochs:1>:处输入:VB  0X040:0

<bochs:2>:处输入:C

然后系统会启动进入DOS,再DOS里执行自己的程序 TEST.COM

程序会停在0X040

之后便可以像调试系统一样调试了。

命令大家可以上网查。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值