概述
- 获取硬件的参数,保存在9000:0000开始的位置。包括:扩展内存的大小(KB),检查显示方式并取参数,光标位置,显卡显示模式,硬盘信息
- 将system模块由0x10000搬到0x0000处
- 进入保护模式
- 加载idt
- 加载gdt
- 空描述符
- 代码段描述符。特权值0,存在,可读非一致性代码段,段长度(段限长+1)8M,颗粒度G=1(4kb),D=1(32位地址,32位或8位数据)
- 数据段描述符。特权值0,存在,非下扩段,可读可写,未访问,B=1使用32位esp,G=1(4kb),段长度(8M)
- 空描述符
- 打开A20地址线
- 设置8259
- 设置初始化命令字ICW1,0x11 (00010001b) ,位5至位7在8086中无用,位4恒为1。ICW1表示:8259工作在边沿触发方式,多片连接,需要设置ICW4。
7 6 5 4 3 2 1 0 0 0 0 1 1-电平触发方式
0-边沿触发方式
设置为0
8086无用
1-单片8259
0-多片8259
1-需要设置ICW4
0-不需要设置ICW4
- 设置初始化命令字ICW2,高5位表示中断号的起始位置,因为每个8259可以提供8个中断号,所以只有高5位有效。256个中断,分为32个段,每个段长8。0.12中主8259中断号始于0x20,从片中断号始于0x28.
- ICW3用于设置主片于从片的关系。主片ICW3每位表示是否接有从片,1表示有,0表示无。而从片通过低3位来表示连接到主片哪个优先级,因为其是通过CAS2~CAS0管脚来判断的,所以只有3位。从2^从片的命令字=主片命令字,当只有一个从片时。
- ICW4表示8259工作的方式,0.12中0x01,表示:普通全嵌套方式,非缓冲方式,非自动结束方式,8086系统
7 6 5 4 3 2 1 0 0 0 0 1-选择特殊全嵌套方式
0-普通全嵌套方式1-缓冲方式
0-非缓冲方式1-缓冲方式下主片
0-缓冲方式下从片1-自动结束中断方式
0-非自动结束方式1-8086/88系统
0-MCS80/85系统
- 打开cr0的PE位,进入保护模式,并用一个跳转jmpi 0,8,刷新指令队列,并转到head.s中执行。此处加载使用lmsw指令,改指令只改变cr0的低四位,只有PE,MP,EM和TS被改写。
最后
以上就是热心长颈鹿为你收集整理的setup.s的全部内容,希望文章能够帮你解决setup.s所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复