读bootsct.S、setup.S、head.S心得
/bootsect.S、setup.S、head.S读取心得 -bootsect.S完成的功能: 1. bootsect.S将自己从ROM BIOS载入的绝对地址0x7C00处搬到0x9000处,然后利用一个jmpi的指令,跳到新位置的jmpi的下一行(go:)去执行。 2.接着,将其他segment registers包括DS、ES、SS都指向0x9000这个位置,与CS看齐。另外将SP及DX指向一任意位移地址(offset),这个地址等一下会用来存放磁盘参数表(disk parameter table)。 3.读入磁盘参数,并建立参数表。 4.接着利用BIOS中断服务int 13h的第0号功能,重置磁盘控制器,使得刚才的设定发挥功能。 5.完成重置磁盘控制器之后,bootsect就从磁盘上读入紧邻着bootsect的setup程序,也就是setup.S,此读入动作是利用BIOS中断服务int 13h的第2号功能。 -bootsect.S源码分析: 1.在boot.h中设置4个DEF_参数,分别为:DEF_INITSEG 0x9000(将bootsect程序移至0x9000段处);DEF_SYSSEG 0x1000(系统加载至0x1000(65536)(64k)段处);DEF_SETUPSEG 0x9020(设置程序(setup)从0x9020开始);DEF_SYSSIZE 0x7F00(=32512=31.75k)*16=508(系统的大小0x7F00)。 2.代码:mov ax,#BOOTSEG mov ds,ax(将ds段寄存器设置为0x7C0);mov ax,#INITSEG mov es,ax(将es段寄存器设置为0x9000);mov cx,#256(将cx计数器置为256(要移动256个字,512字节));sub si,si、sub di,di分别设置源地址和目的地址;设置好之后,程序jmpi go,INITSEG go:表示将跳到CS为0x9000,IP为offset的位置,其中INITSEG=0x9000定义于程序开头的部分,而go这个label则恰好是下一行指令所在的位置。 -Setup.S: 1. Setup.S读入磁盘参数,并建立参数表。 2.接着利用BIOS中断服务int 13h的第2号功能,读取目前磁盘的参数。 3.就要读入真正Linux的kernel了,也就是你可以在Linux的根目录下看到的"vmlinuz"。 -HEAD.S: 1.HEAD.S主要是用于加载Linux kernel。 2.它从磁盘上读入Linux kernel,然后将其加载到内存中。 -常见的问题与解决: 1.Q:bootsect.S的作用是什么? A:bootsect.S的作用是将自己从ROM BIOS载入的绝对地址0x7C00处搬到0x9000处,然后读取磁盘参数,并建立参数表。 2.Q:setup.S的作用是什么? A:setup.S的作用是读入磁盘参数,并建立参数表,然后读取Linux kernel。 3.Q:head.S的作用是什么? A:head.S的作用是加载Linux kernel。
剩余8页未读,继续阅读
- ytok1232013-06-15读bootsct.S、setup.Shead.S心得是一个好资料
- 粉丝: 1
- 资源: 21
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- RC振荡电路——文氏桥振荡电路(OP07仿真)_文氏桥振荡器-CSDN博客.mhtml
- vs2022安装包,推荐安装社区版
- 固件开发项目实例1000例实例(26)--智能家居安全系统的固件设计.docx
- 固件开发项目实例1000例实例(24)--智能健康手环的固件设计.docx
- 基于Simulink的小波变换滤波器.docx
- 吉林大学2024就业质量年度报告
- 常用工具:谷歌浏览器安装包
- FPC0.5立贴, footprint expert封装
- DigiShow 教程5 艺术灯光应用
- DigiShow 教程6 数码音乐应用
- pikachu-master.zip
- DigiShow 教程7 互动装置应用
- DigiShow 教程8 表达式和脚本
- Word自动填表组件-发票打印,报名表自动生成
- FPC0.5l立贴, footprint expert封装
- 复旦大学计算机网络课后习题及答案.zip