对于很多人来讲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
分享到:
相关推荐
5. **为什么BIOS将MBR读入0x7C00地址处(x86平台下).doc**:主引导记录(MBR)包含启动加载器,用于启动操作系统。此文档可能解释BIOS选择0x7C00作为加载点的历史原因和技术考虑。 6. **VGA.doc**:VGA(Video ...
3. `mov sp, 7C00`: 将SP寄存器设为0x7C00,设定堆栈指针,确保堆栈在MBR区域内。 4. `sti`: 开启中断,允许系统处理中断请求。 5. `push ax`、`pop es`: 将AX寄存器的值推入堆栈,然后弹出到ES段寄存器,初始化额外...
- `mov sp, 0x7c00`:将SP(栈指针寄存器)设置为0x7c00,这表示栈的顶部将被初始化到MBR代码区域的末尾。 这些操作用于设置栈环境,以便后续可以正确地使用栈进行数据传递和存储。 #### 2. 设置中断和保护模式 `...
本文将详细介绍x86平台BIOS微码提取工具R270版本,以及如何在Windows 64位环境下使用该工具。 标题中的“x86平台”指的是基于Intel或AMD的32位或64位处理器的计算机系统。BIOS微码是嵌入在这些处理器内部的一小段...
我们使用mov ax,cs指令将代码段地址送到AX寄存器中,然后使用mov sp,7c00指令将堆栈寄存器设置为7C00。 四、MBR反汇编代码分析 1. 首先,我们来分析MBR反汇编代码的入口点。在地址7C00处,我们发现了一个jmp 7c0c...
### BIOS、MBR、PBR、分区等基础知识详解 #### 一、BIOS(基本输入输出系统) **定义与功能:** BIOS(Basic Input/Output System)是一种存储在计算机主板上的只读内存(ROM)中的程序。它为计算机硬件与操作系统...
1. bootsect.S将自己从ROM BIOS载入的绝对地址0x7C00处搬到0x9000处,然后利用一个jmpi的指令,跳到新位置的jmpi的下一行(go:)去执行。 2.接着,将其他segment registers包括DS、ES、SS都指向0x9000这个位置,与CS...
若系统从硬盘启动,BIOS会读取主引导记录(MBR)到0x7C00处。如果MBR包含了GRUB的stage1代码,GRUB会负责后续的引导过程。如果不需要stage1,BIOS将直接通过物理扇区寻址加载stage2(因为此时还没有文件系统支持)。...
* BIOS将第一个扇区读入到内存地址0x7C00处 三、MBR阶段 * MBR代码工作在16位实模式下 * MBR检查分区表,找到活动分区 * MBR将活动分区的第一个扇区(PBR)载入到地址0000:7C00的位置 * MBR检查硬件是否支持TPM ...
BIOS+MBR硬盘,一步一步教你怎么用clover装黑苹果,教程采用的格式是MBR硬盘格式安装的,采用的电脑是笔记本G510,关闭独显采用核显为HD4600,配置如下:
1. **BIOS中断调用**:MBR的执行始于BIOS,它会加载MBR到内存的0x7C00地址。源码中可能会包含诸如`int 13h`这样的中断调用来与BIOS交互,如读取硬盘数据。 2. **检测硬盘分区**:MBR中包含了检查硬盘分区表的代码,...
计算机启动过程(1)- BIOS+MBR 部分 本文总结了计算机启动过程的第一部分,主要介绍了 BIOS 和 MBR 的基本概念、组成和工作原理。 一、BIOS(Basic Input/Output System) BIOS 是计算机的基本输入/输出系统,...
在X86架构的CPU中,地址管理机制是其核心特性之一,特别是在段式管理下,地址形成机制显得尤为重要。这段描述聚焦于X86 CPU如何在段式管理下进行地址转换,以及BIOS初始化过程中如何利用这一机制。 首先,我们要...
### BIOS、MBR、PBR等基础知识 #### 1. BIOS概述 BIOS(Basic Input/Output System)即基本输入输出系统,是一组被固化在计算机主板上的ROM芯片中的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息...
BIOS,全称为基本输入输出系统(Basic Input Output System),是计算机硬件系统的重要组成部分,它是一组固化在计算机主板上EPROM或闪存芯片中的程序,负责计算机系统最基础的硬件初始化、驱动加载以及与操作系统...
引导扇区程序被加载到物理地址0x7c00开始执行,这是BIOS加载引导扇区的标准位置。在Bochs中,可以通过`sreg`命令查看CPU的段寄存器状态,`xp`命令用于打印内存区域的内容,而`vb`命令则用于设置断点。 实验步骤中,...
3. **读取硬盘第一个扇区**: BIOS将硬盘的第一个扇区(即0头0道1扇区,也称为Boot Sector或MBR)读入内存地址0000:7c00处。 4. **检查标志**: BIOS检查内存地址0000:7dfe处的标志是否为0xaa55。如果不等于该值,则...
然后BIOS跳到地址0x7C00并开始执行相应的程序。正是这个程序负责将操作系统(operating system)读入内存并初始化。 首先来看看引导记录(Boot Record)中有些什么。DOS中的DEBUG是察看内存或磁盘内容的绝好工具。...