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

  • 相关阅读:
    MySQL学习笔记:repeat、loop循环
    链表//相交链表
    单位和值
    链表//环形链表 II
    css样式设置小技巧
    链表//环形链表
    CSS代码缩写,占用更少的带宽
    CSS布局模型
    CSS盒模型
    CSS格式化排版
  • 原文地址:https://www.cnblogs.com/teafree/p/2200453.html
Copyright © 2011-2022 走看看