zoukankan      html  css  js  c++  java
  • 操作系统编写之挖坑设断点

    有时我们用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处设置一个断点,就可以让程序在执行我们的代码前先暂停一来。

  • 相关阅读:
    nodeclub 学习记录
    读mongoose api 记录
    sublime 插件 和free 注册码
    mongodb 基本语法
    安装 adobe flash player
    nginx 安装
    压缩 解压文件
    async 异步流程控制规则
    a标签# 和javascript:;的区别
    获取url 参数
  • 原文地址:https://www.cnblogs.com/teafree/p/2200453.html
Copyright © 2011-2022 走看看