操作系统引导探究
高等教育出版社 唐朔飞) ,上面有非常详尽的描述,而一般的汇编教材也多有谈及,因此这里只打算讲讲 BIOS 对中断的处理. 拥有帝国一切,皆有可能。欢迎访问phome.net
由上图我们可以清楚的看到,当由中断信号产生时,中断信号通过“中断地址形成部件”产生一个中断向量地址,此向量地址其实就是指向一个实际内存地址的指针,而这个实际内存地址中往往按排一条跳转指令(jmp)跳转到实际处理此中断的中断服务程序中去执行.这一块专门用于处理中断跳转的内存就被称为中断向量表.在内存中这块中断向量表被 放在什么地方的呢?而实际的中断处理程序又在什么地方的呢? 3.2 系统的内存安排(1M) 要回答上面的两个问题,我们需要看看系统中内存是怎么安排的.在 CPU 被加点的时候,最初的 1M 的内存,是由 BIOS 为我们安排好了的,每一字节都有特殊的用处.
3.3 利用 BIOS 13 号中断读取磁盘扇区 有了前面的描述作为基础,下面我们可以正式描述怎样通过 BIOS 中断读取磁盘扇区了.要读取磁盘扇区,我们需要使用 BIOS 的 13 号中断,13 号中断会将几个寄存器的值作为其参数,因此,我们在调用 13 号中断的过程中需要设置寄存器.那么当怎样设置寄存器呢?会用到哪些寄存器呢?请往下看:
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |