快速业务通道

操作系统引导探究

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-01
高等教育出版社 唐朔飞) ,上面有非常详尽的描述,而一般的汇编教材也多有谈及,因此这里只打算讲讲 BIOS 对中断的处理.
拥有帝国一切,皆有可能。欢迎访问phome.net

由上图我们可以清楚的看到,当由中断信号产生时,中断信号通过“中断地址形成部件”产生一个中断向量地址,此向量地址其实就是指向一个实际内存地址的指针,而这个实际内存地址中往往按排一条跳转指令(jmp)跳转到实际处理此中断的中断服务程序中去执行.这一块专门用于处理中断跳转的内存就被称为中断向量表.在内存中这块中断向量表被

放在什么地方的呢?而实际的中断处理程序又在什么地方的呢?

3.2 系统的内存安排(1M)

要回答上面的两个问题,我们需要看看系统中内存是怎么安排的.在 CPU 被加点的时候,最初的 1M 的内存,是由 BIOS 为我们安排好了的,每一字节都有特殊的用处.


由上图我们现在可以很方便的问答上面提出的两个问题. 0x00000~0x003FF 是中断向量表所在,因此不能将磁盘从的操作系统读到此处,这样会覆盖中断向量表,就无法再通过 BIOS 中断读取磁盘内容了.你也许会说:我是先调用中断,再读的啊.但事实在BIOS 在读的过程中自己会多次调用其它中断辅助完成.

3.3 利用 BIOS 13 号中断读取磁盘扇区

有了前面的描述作为基础,下面我们可以正式描述怎样通过 BIOS 中断读取磁盘扇区了.要读取磁盘扇区,我们需要使用 BIOS 的 13 号中断,13 号中断会将几个寄存器的值作为其参数,因此,我们在调用 13 号中断的过程中需要设置寄存器.那么当怎样设置寄存器呢?会用到哪些寄存器呢?请往下看:


AH寄存器:存放功能号,为 2 的时候,表示使用读磁盘功能

DL 寄存器:存驱动器号,表示欲读哪一个驱动器

CH寄存器:存磁头号,表示欲读哪一个磁头

CL 寄存器:存扇区号,表示欲读的启始扇区

AL 寄存器:存计数值,表示欲读入的扇区数量

在设置了这几个寄存器后,我们就可以使用 int 13 这条指令调用 BIOS 13 号中断读取指定的磁盘扇区,它将磁盘扇区读入 ES:BX 处,因此,在调用它之前,我们实际上还需要设置 ES与 BX寄存器,以指出数据在内存中存放的位置. 拥有帝国一切,皆有可能。欢迎访问phome.net

四、保护模式下段模式内存地址的访问

写程序离不开对内存的访问,然而在保护模式下内存的访问与在实模式下内存的访问完全不同,这里我们将详细描述一下保护模式下内存的访问方法.当然,这里并不打算完整的介绍保护模式下所有的内存访问方法与机制, 只介绍从实模式转到保护模式下所需要进行的转换,完整的内存访问请你最好参见《Intel用户手册》 ,当然,随着 pyos 的实验进行,我也会在后面的实验报告与心得体会中渐渐描述,现在不描述主要原因是我还为通过 pyos 进行实验, 对与没经过实验验证的东西, 我并不打算也不敢妄下结论, 在前言中已然说过,这篇文章只是我的一些心得体会,如果我没有实验过,就没有心得,也没有体会,也就无法描述了.

言归正转,我们还是先来看看实模式下内存访问方法吧.

4.1 实模式下的内存访问

计算机在加电时,处于“实模式” ,在计算机中有一个 CR0 寄存器,又称为 0 号控制寄存器,在这个寄存器中,最低位也即第 0 位,被称为 PM(Protected Modle:保护模式)位,当它被清零的时候表示 CPU在“实模式”下工作,当它被置位的时候,表示 CPU在“保护模式”下工作.在计算机加电的时候,它是被清零的,所在这个时候的计算机,处于“实模式” .“实模式”下的内存访问通过段寄存器与偏移量构成,比如前面描述中常常出现的0x:0000:0x0001 就是一个实模式下的内存地址.分号前面的值表时段寄存器中的值,分号后面的值表是偏移量,实际物理地址的形成如下图所示:

然而

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号