操作系统编写之挖坑设断点

有时我们用DOS来调试自己写的操作系统,很难确切获知操作系统的入口地址,所以设置断点也比较麻烦。

有一个解决方法就是在一个已知的地址设置断点,然后让指令跑到那个已知的地址再跑回原来的地方,这样就可以实现断点的设置了,这个就叫挖坑设置断点。

在DOS中,物理地址为0x200的内存是没有被使用的,所以可以在此处挖一个坑,让程序跑进来再跑出去。

 1  [SECTION .s16]
2 [BITS 16]
3 Hoot: ;坑的入口点
4 mov ax,01h
5 mov ax,02h
6 GoBack:
7 jmp 0:Back ;跳出坑外,执行正常的程序流
8 HootLen equ $ - Hoot
9
10 LABEL_BEGIN: ;入口点
11
12 ;设置坑
13 mov ax,cs
14 mov [GoBack + 3],ax
15 mov ds,ax
16 mov si,Hoot
17 mov ax,0
18 mov es,ax
19 mov di,200h
20 mov cx,HootLen
21 rep movsb
22 jmp 0:200h ;跑到坑里面
23
24 Back: ; 跳出坑以后,从这里开始执行
25 mov ax,cs
26 mov ds,ax
27 mov es,ax
28 mov ss,ax
29 mov sp,0100h

 

只要在物理地址为0x200处设置一个断点,就可以让程序在执行我们的代码前先暂停一来。

转载于:https://www.cnblogs.com/teafree/archive/2011/10/07/2200453.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值