对于很多人来讲0x7C00这个地址是很神秘的,不知道这是干什么的。但是对于了解过x86平台下BIOS启动过程的人,对这个地址再熟悉不过了。BIOS就是将MBR读入0x7C00地址,然后进行后续的引导的。操作系统或是bootloader开发者必须假设 他们的汇编代码被加载并从0x7C00处开始执行。
0x7C00的定义
对于这个地址,它不属于Intel x86平台规范的,而是属于BIOS规范中定义的内容。0x7C00第一次出现在IBM PC 5150的BIOS处理int 19(19号中断)的时候,IBM PC 5150是x86(32位)IBM PC/AT系列的祖先,这款PC于1981年发布,使用了intel 8088(16位)的处理器和16KB的RAM内存,BIOS和微软的基本指令均放在该内存中。
当打开电源,BIOS开始自检,然后出发19号中断,在处理19号中断时,BIOS检测电脑是否具有软盘、硬盘或是固定磁盘,如果有任何可以使用的磁盘,BIOS酒吧磁盘的第一个扇区(512B)加载到内存的0x7C00地址处。
0x7C00的前身
0x7C00地址第一次出现在IBM PC 5150的ROM bios中,在此之前使用的地址是0×200。使用该地址的原因主要有:当时8086中断向量使用地址为0×0-0x3FF;86-DOS从0×400处被加载;而它不使用0×200-0x3FF这段中断向量地址。因此这段0×200-0x3FF地址不能被其他程序使用,Tim Paterson(86-DOS开发者)选择0×200作为MBR加载地址。
0x7C00的意义
他们想留下32kb内更多的空间给操作系统来加载自己;8086/8088使用0×0-0x3FF作为中断向量,然后BIOS数据紧随之后;引导扇区是512字节,但是用于引导程序的栈或数据区域需要多于512字节;因此0x7C00,32kb中的最后1kb被选中。
一旦操作系统被引导并开始,引导扇区将一直不会被使用指导重启,因此操作系统和应用程序可以自由的使用32KB的最后1kb空间。在操作系统被加载后,内存布局如下:
+——————— 0×0
| Interrupts vectors(中断向量表)
+——————— 0×400
| BIOS data area(BIOS的数据区域)
+——————— 0×5??
| OS load area(操作系统加载区域)
+——————— 0x7C00
| Boot sector(引导区域)
+——————— 0x7E00
| Boot data/stack(引导数据/堆栈)
+——————— 0x7FFF
| (not used)
+——————— (…)
参考:
http://www.glamenv-septzen.net/en/view/6
分享到:
相关推荐
MBR在系统启动时由BIOS INT 19H自动加载到0000:7c00处,为512个字节.下面这段代码实现把0000:7c1b处MBR代码复制485个字节到0000:061b处,为什么不从0000:7c00开始复制512个到0000:06cc处,因为前面1b 个字节为复制代码,...
CPU不能直接从外设运行操作系统,所以必须将操作系统加载至内存中,而这个工作最开始的部分,BIOS需要完成一些检测工作,和设置实模式下的中断向量表和服务程序,并将操作系统的引导扇区加载值0x7c00处,然后将跳转...
3、 将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处; 4、 检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他启动介质,则显示 ”No ROM BASIC” ,然后死机; 5、...
BIOS+MBR硬盘,一步一步教你怎么用clover装黑苹果,教程采用的格式是MBR硬盘格式安装的,采用的电脑是笔记本G510,关闭独显采用核显为HD4600,配置如下:
BIOS、MBR、PBR、分区等基础知识
然后BIOS跳到地址0x7C00并开始执行相应的程序。正是这个程序负责将操作系统(operating system)读入内存并初始化。 首先来看看引导记录(Boot Record)中有些什么。DOS中的DEBUG是察看内存或磁盘内容的绝好工具。...
BIOS、MBR、PBR等基础知识,兼谈U盘、移动硬盘以及操作系统的安装与启动基本原理.txt
(1) BIOS执行INT 0x19,加载MBR至0x7c00并跳转执行。如果你安装GRUB到MBR,GRUB的安装程序会把Stage1(512B)拷贝到MBR。视stage2的大小,安装程序会在Stage1中嵌入Stage1_5或者Stage2的磁盘位置信息。 (2) Stage1...
重点推荐功能: 1.能刷新所有的bios ,包括ami,phoenix,...2.能正确的保存所有的bios为文件. 3.当bios image小于flash size时,仍然能自动搜索出适当的位置进行flash. 如果您对源代码感兴趣,请联系我。chrsju@gmail.com
做X86系列主板BIOS的一些心得,是在实践中总结的,应该对初学者有些用处
Pentium PC机主板 BIOS源代码(x86 汇编,C)
基于X86单芯片计算机的BIOS软件设计.pdf
计算机启动过程(1)-BIOS+MBR部分.pdf
X86 CPU在段式管理下的地址形成机制
WIN98SE硬盘主引导记录代码反汇编分析硬盘引导记录MBR(Master Boot Record)是指硬盘之0面0道1扇区之内容,PC及其兼容机之ROM BIOS约定在上电及POST自检成功后,将其从硬盘读出,放置在内存0:7C00处,然后转去该...
2023年7月17日最新版本,已经编译为exe,方便大家使用
bios by 百度贴吧dsanke 本人闲鱼付费购买,不支持八代i5,仅支持八代奔腾i3 ; ; These settings are not part recommendations, nor are they an ; indication these parts are supported on Intel platforms. ; ...
Lenovo G470 BIOS V2.19-40CN33WW(x86 and x64).rar 32位和64位BIOS文件,以及本人刷写时出现的问题及其解决方案。
1.1 读入BIOS后,再读入引导扇区 1.2 bootsect.s开始引导1--从0x7c00移动到0x9000 1.3 显示在开机 1.4把剩余的syste