计算机的启动过程———《x86汇编语言:从实模式到保护模式》读书笔记补遗01
来源:互联网 发布:海关进出口数据查询 编辑:程序博客网 时间:2024/05/23 19:55
有的朋友问我,为什么读书笔记不从第一章开始写?这个问题啊…当初觉得前面的内容不是很重要,就没有写。
我真是高估自己的记忆力了,随着时间的推移,发现前面好多内容都生疏了,有的朋友问我问题我都答不上来。所以,决定再补充一些笔记。即帮助自己回忆,也能方便初学者。
下面进入正题。
你有没有想过这样一个问题——计算机是怎么开始执行我们写的指令的?
这就需要了解计算机的启动过程了。
对于32位的x86处理器,在加电启动时,段寄存器CS
的内容是0xF000,IP
寄存器的内容为0xFFF0,按照实模式地址的合成方法,给出的地址就是0xFFFF0;另外,在刚启动的时候,处理器会将地址线A20~A31强制为高电平,所以,初始发出的物理地址就是0xFFFF_FFF0;这个地址存放的就是BIOS的第一条指令。
在Bochs上,可以看到第一条指令是
jmpf 0xf000:e05b
BIOS需要做的工作有很多,比如
1)初始化各种主板芯片组
2)初始化键盘控制器8042
3)初始化中断向量 ,中断服务例程.
4)初始化 VGA BIOS 控制器
5)显示BIOS的版本和公司名称
6)扫描软驱和各种介质容量
7)读取CMOS的启动顺序配置,并检测启动装置是否正常
8)调用INT 19h启动自举程序
对于汇编语言的学习,需要了解最后两个步骤,(7)和(8)。
BIOS按照”启动顺序”,选择排在第一位的储存设备,读取该设备的第一个扇区(512B)到内存0x7c00(物理地址)处,然后检查这512个字节的最后两个字节是不是0x55和0xAA,如果是则表明这个设备可以用于启动,这个扇区就是主引导扇区;如果不是,则继续尝试”启动顺序”中的下一个设备。
如果确实是可以启动的设备,则用一个华丽的JMP指令跳到0x0000:0x7c00处执行。
jmp 0x0000:0x7c00
以后的实验,我们都是从主引导扇区开始写代码。所以,当计算机将要执行我们写的第一条指令的时候,请牢记此时CS=0x0000
,IP=0x7c00
.
【完】
- 计算机的启动过程———《x86汇编语言:从实模式到保护模式》读书笔记补遗01
- 显存文本模式详解 ———《x86汇编语言:从实模式到保护模式》读书笔记补遗02
- 存储器的保护(二)——《x86汇编语言:从实模式到保护模式》读书笔记19
- 存储器的保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记18
- 存储器的保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记20
- RPL的故事 ——《x86汇编语言:从实模式到保护模式》读书笔记31
- 任务切换的方法——《x86汇编语言:从实模式到保护模式》读书笔记37
- 进入保护模式(一)——《x86汇编语言:从实模式到保护模式》读书笔记12
- 进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14
- 进入保护模式(三)——《x86汇编语言:从实模式到保护模式》读书笔记17
- x86分页机制——《x86汇编语言:从实模式到保护模式》读书笔记42
- 硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01
- 硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01
- 开启分页机制———《x86汇编语言:从实模式到保护模式》读书笔记44
- 8086中断系统——《x86汇编语言:从实模式到保护模式》读书笔记04
- 8086键盘输入实验——《x86汇编语言:从实模式到保护模式》读书笔记07
- 关于80286——《x86汇编语言:从实模式到保护模式》读书笔记15
- TSS详解 ——《x86汇编语言:从实模式到保护模式》读书笔记33
- error,bias,var之间的关系
- 利用MFC截取对话框图像或者截取全屏图像
- php 单引号,双引号,反引号区别
- SpringMVC中使用CommonsMultipartResolver进行文件上传
- 初识MyBatis
- 计算机的启动过程———《x86汇编语言:从实模式到保护模式》读书笔记补遗01
- Java sdut acm 2246 时间日期格式转换
- c++:使用function模板和bind函数
- 执行完线程1再执行线程2 以及线程1和线程2共同执行
- 51nod算法马拉松23(飞越愚人节)
- Android中图片Bitmap的缩放
- virtualenv机制简述及强制改名产生的后遗症解决
- 二叉树的中序遍历
- Maven 使用jetty 常见三个 错误