发布时间:2024-04-14 文章来源:深度系统下载 浏览:
一、简单的磁盘引导程序
简单的说明:计算机加电后,BIOS检查硬件等等,BIOS调用19号中断加载磁盘引导程序。 以下用NASM编写的一个简单的磁盘引导程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; '$'表示当前代码行的地址,'$$'表示起始代码地址
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[bits 16] ;说明这是16位代码(可以不写)
org 7c00h ;在运行时将此段程序加载到内存7c00h位置
jmp $ ;循环
times 510 - ($ - $$) 0 ;剩余部分填充0,总大小为512,为0xaa55预留2字节
dw 0xaa55 ;结束标志
二、实模式与保护模式 简单来理解,实模式运行在16位环境下,保护模式运行在32位环境下。32位环境中寻址空间可达4GB,除此之外,32位环境中可以很好的支持多任务。 从执行程序的角度来理解两种模式: 1、实模式 实模式下计算地址方式是通过“16位段地址(寄存器中)*16h+偏移”来实现的。 例如指令的寻址:CS*16h + IP 2、保护模式 保护模式下计算地址的方式是通过“GDT中存储的段地址*16h+偏移”来实现的。32位模式下,16位的段地址被用来寻找GDT的位置。 例如指令的寻址:CS-->GDT代码段位置*16h + IP 解释一下GDT(Global Descriptor Table),看一下他的结构: 从表中可以看出,GDT首先是一个数组结构,每一个条目存储了段的信息。下面就可以来理解保护模式下如何通过描述符表来进行地址计算了: 以上是实模式向保护模式转换的基本原理 |
上一篇:
下一篇:内存导致电脑自动重启的因素