将网页加入可信站点网站做rss+wordpress
web/
2025/9/25 21:04:58/
文章来源:
将网页加入可信站点,网站做rss+wordpress,wordpress优酷缩略图,查询网站是否备案学习交流加 个人qq#xff1a; 1126137994个人微信#xff1a; liu1126137994学习交流资源分享qq群#xff1a; 962535112 上一篇文章迈进了汇编的大门#xff0c;点击链接查看上一篇文章#xff1a;汇编语言和汇编软件
上一篇文章大概学会以下内容#xff1a;
了解汇编… 学习交流加 个人qq 1126137994个人微信 liu1126137994学习交流资源分享qq群 962535112 上一篇文章迈进了汇编的大门点击链接查看上一篇文章汇编语言和汇编软件
上一篇文章大概学会以下内容
了解汇编语言的作用下载NASM编译器并学会使用它来编译汇编语言源程序
至于更深层次的汇编原理需要在以后的文章中逐步展现。
今天这篇文章主要记录以下学习内容
了解计算机的开机启动。只有这样才能知道我们应该把编译好的程序放到哪里才会被CPU执行。了解硬盘的构造和作用简单了解 文章目录1、计算机的启动过程1.1、如何将编译好的程序直接交给处理器执行1.2、计算机的加电复位1.3、BIOS-基本输入输出系统1.4、硬盘及其工作原理1.5、一切从主引导扇区开始总结1、计算机的启动过程
1.1、如何将编译好的程序直接交给处理器执行
我们这一系列文章是学习X86汇编-从实模式到保护模式。目前我们还没有写过汇编程序。如果我们写好了一个汇编程序使用特定的汇编编译软件来将汇编程序编译好然后再使用特定的平台来运行这个程序即可。但是我们的目的不是这么简单。
我们的目的是学习操作系统与计算机系统之间的关系。那么我们如何执行我们写好的汇编代码呢
每种编译器都有能力针对不同的操作系统将你的源程序编译为不同的支持该操作系统平台的二进制文件。然后运行这个二进制文件。然后不同的操作系统开发的软件也不一样写的程序也不一样在这里我们特指汇编语言这样开发起来就很麻烦。
换个角度想一下操作系统也是一个软件它也是需要处理器对它取指令和执行指令的软件。只不过它比一般的软件更加复杂而已。如果我们能够绕过操作系统让我们写的程序直接被处理器执行而不需要操作系统的干预的话或者让电脑一开机就执行我们自己写的程序而不是加载你的操作系统的话那么就可以实现让CPU直接过来执行我们的代码这样看来更简单
这个主意完全可行但是我们还需要了解一些知识。比如计算机是如何启动后加载操作系统的。
1.2、计算机的加电复位
在众多处理器的引脚中有一个RESET引脚用于接收复位信号。每当处理器加电或者复位处理器都会执行一个硬件初始化以及一个内部自测程序BIST然后将内部所有的寄存器的值初始化到一个预置的状态。
比如针对8086处理器来说复位将使代码段寄存器CS的内容初始化到0xFFFF其他所有寄存器初始化为0x0000.
处理器天生的职责就是取指令与执行指令。当你加电或者复位后处理器就兴奋了马上就想去取指令。但是有一个问题现在内存中可是什么都没有呢。无法取指令啊。至于内存中为什么没有东西这个大家应该很了解了因为内存是掉电丢失的关闭电源后内存中所有的运行的程序包括操作系统程序都会丢失。
那么既然内存什么都没有处理器如何取指令和执行指令。
BIOS就此登场
1.3、BIOS-基本输入输出系统
注意我们现在还是停留在8086如果有一些知识与你所知道的不一样那肯定是因为你所知道的不是8086的有可能是以后出现的IA-32等。
8086具有20根地址线可以阅读文章查看为什么是20根地址线处理器、内存、指令它的寻址范围是0x00000-0xFFFFF可以寻址1M的内存空间。我们之前学过我们的内存条物理内存就是映射到这1M的寻址空间CPU才能在这1M的寻址空间中对内存进行寻址。
实际上这20根地址线并没有全部用于内存寻址只不过是大部分地址线用于内存还有一部分地址线用于只读存储器ROM和外围设备。
上图中上面的是ROM下面的是内存条。外设的话放到以后讲解。
ROM是什么ROM是只读存储器它不管是在有电的是时候还是没电的时候它存储的内容不会消失。它存储的内容是预先写好的一般无法改变。这个特点很有用比如可以在上面预先写好一些程序指令。当处理器上电后然后处理器先去这个ROM中取指令执行。这样就不会让处理器上电后在那干等着。
在8086中ROM占据着处理器1M寻址空间的最顶端的64KB。物理地址的范围是0xF0000-0xFFFFF。这一段空间固化了开机时要执行的指令。
物理内存占据着处理器1M寻址空间的较低端的640KB。地址范围是0x00000-0x9FFFF。中间还有一部分地址空间是用于外围设备的。
由上一节的内容知处理器加电或者复位后CS寄存器被赋予初值0xFFFFIP寄存器赋予初值0x0000。所以此时需要访问的物理地址为0xFFFF0。它正好位于ROM中。
在这个ROM中的这个位置是一个跳转指令jmp。jmp指令通过修改CS与IP使处理器从ROM的另一个位置开始取指令。
好了此时处理器开始稳了不再到处跳了安安静静的从ROM的这个位置取指令执行指令。。。。。
那么这个ROM中存的是什么指令呢为什么让CPU上来先执行这里的代码
这个ROM中主要进行硬件的检测诊断和初始化。这里的检测和诊断很好理解。初始化的话是让电脑出于一种可以显示屏幕可以使用键盘等这样的基本功能。比如你重装系统的时候会有界面供你选择如何一步步安装操作系统甚至可以用鼠标键盘操作。这种基本的状态就是由ROM中的代码初始化而来的。
正因为这种基本的状态这个ROM芯片又叫做BIOS基本输入输出系统ROM。我们这里不讲BIOS。
ROM-BIOS 的容量很小它执行完后就会让处理器去其他地方接着取指令执行。这个其他地方就是主引导扇区实际上这个主引导扇区就是在硬盘的某一个位置。
那么现在问题就来了在哪一个位置处理器如何对它进行读写操作
想要知道这个就得先了解硬盘及其工作原理。
1.4、硬盘及其工作原理
如下图是一个拆开的硬盘
为了搞清楚硬盘的构造下图给出了一个更详细的图示:
硬盘可以有多个盘片或者一个盘片。他们串在一个轴上由电机带着高速旋转。
每个盘片都有两个磁头上面一个下面一个。所以经常用磁头来指代盘面。磁头有编号第一个盘片上上面的磁头编号是0下面的磁头编号是1第二个盘片上面的磁头编号是2下面的磁头编号是3以此类推。
磁头是由磁头臂固定在同一个支架上由步进电机带着在盘片的中心和边缘移动。
可以想象当盘片高速旋转时磁头每步进一次就会在盘面上形成一个圆这个看不见的圆被称为磁道。磁道是数据记录的轨迹。从上往下所有的磁道形成一个圆柱称为柱面。
磁道或者柱面也要编号。编号是从最边缘的磁道开始编号最边缘的是0号磁道向里依次递增。
柱面是一个用来优化数据读写的概念。在硬盘上数据的访问是以柱面来组织的。
实际上磁道还可以进一步划分成扇区磁道很窄也看不见单子啊想象中它仍然呈带状占有一定的宽度。将它划分许多段后每一部分都呈扇形这就是扇区的由来。其实扇区才是最小的读写单位。
每个磁道能划分成几个扇区取决于磁盘制造者但通常为63个。每一个扇区也有一个编号扇区的编号是从1号开始。
扇区与扇区之间是以间隙隔开。每个扇区以扇区头开始然后是512字节的数据区。扇区头包含了每个扇区自己的信息包括这个扇区所在的磁道号磁头号和扇区号。
1.5、一切从主引导扇区开始
讲了这么多硬盘的构造实际上就是为了引出主引导扇区的概念。
主引导扇区硬盘的第一个扇区是0面0道1扇区或者叫做0头0柱1扇区。这就是主引导扇区。也就是处理器执行完BIOS-ROM中的指令后需要执行指令的地方。当然是BIOS-ROM将主引导扇区的第一条指令加载到内存中也就是内存地址0x07C000x0000:0x7c00。
实际上就是一条jmp指令
jmp 0x0000:0x7c00主引导扇区的功能是继续从硬盘的其他地方读取更多的指令加以执行比如最后肯定会加载操作系统
现在终于可以回到最开始的问题。我们如果把我们写好的自己的汇编代码放到主引导扇区的位置上是不是就可以让处理器直接执行我们的代码了
肯定是的
但是有一个问题就是我们不能在我们自己电脑上做实验因为你将你的代码写到主引导扇区那么以后你的电脑就瘫痪了无法启动操作系统了
不过虚拟机是一个好家伙。我们可以在虚拟机上虚拟一个计算机出来在上面做实验。下篇文章讲解虚拟机
总结
今天学会一下内容
了解计算机的启动过程了解硬盘的构造与原理
今天就到这里明天继续学习
学习探讨加 qq1126137994 微信liu1126137994
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81819.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!