liyux中的setup.s文件

1. setup程序的主要作用是利用ROM BIOS中断读取机器系统数据,并将这些数据保存到0x90000开始的位置(覆盖掉了bootsect程序),所取得的参数和保留的内存位置见下表。

内存地址

长度

(字节)

名称

描述

0x90000

2

光标位置

列号(0x00-最左端),行号(0x00-最顶端)

0x90002

2

扩展内存数

系统从1M开始的扩展内存数值(KB

0x90004

2

显示页面

当前显示页面

0x90006

1

显示模式

 

0x90007

1

字符列数

 

0x90008

2

??

 

0x9000A

1

显示内存

显示内存(0x00-64k,0x01-128k,0x02-192k,0x30-256k

0x9000B

1

显示状态

0x00-彩色,I/O=0x3dX;0x11-单色,I/O=0x3bX

0x9000C

2

特性参数

显示卡特性参数

0x90080

16

硬盘参数表

第一个硬盘的参数表

0x90090

16

硬盘参数表

第二个硬盘的参数表

0x901FC

2

根设备号

根文件系统所在的设备号(bootsect.s中设置)

 

然后setup程序将system模块从0x10000-0x8ffff整块向下移动到内存绝对地址0x00000处。接下来加载中断描述符表寄存器(idtr)和全局描述符表寄存器(gdtr),开启A20地址线,重新设置两个中断控制芯片8259A,将硬件中断号重新设置为0x20-0x2f。最后设置CPU的控制寄存器CR0(机器状态字),从而进入32位保护模式进行,并跳转到位于system模块最前面部分的head.s程序继续运行。

2. 执行setup.s程序后内存映像

 

3. 硬盘基本参数表

    在PC机BIOS设定的中断向量表中,int 0x41的中断向量位置(4*0x41 = 0x0000:0x0104)存放的并不是中断程序的地址,而是第一个硬盘的基本参数表。int 0x46中断向量位置存放的是第二个硬盘的基本参数表。

4. A20地址线问题

    为了兼容8088实现回环而设置的专用信号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值