- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Setup模块分析 Setup.s首先读取BIOS自检时设置好的内存、显示卡、硬盘等信息,保存到内核中的对应地址中(如上表所列),然后将System模块从0x10000处移动到0x00000处 Setup模块分析 然后,Setup让硬件进入“保护模式” 实模式(16位模式)和保护模式(32位模式)的本质区别是什么呢? end_move: mov ax,#SETUPSEG mov ds,ax lidt idt_48 lgdt gdt_48//设置保护模式下的中断和寻址 进入保护模式的命令... idt_48:.word 0 .word 0,0 //保护模式中断函数表 gdt_48:.word 0x800 .word 512+gdt,0x9 gdt: .word 0,0,0,0 .word 0x07FF, 0x0000, 0x9A00, 0x00C0 .word 0x07FF, 0x0000, 0x9200, 0x00C0 SETUPSEG = 0x9020 用GDT将cs:ip变成物理地址,GDT和IDT是什么? GDT表的内容是从何而来的呢? 这段代码是初始化GDT Setup模块分析 进入“保护模式”的代码 call empty_8042 mov al,#0xD1 out #0x64,al //8042是键盘控制器,其输出端口P2用来控制A20地址线 call empty_8042 mov al,#0xDF out #0x60,al //选通A20地址线 call empty_8042 初始化8259(中断控制) //一段非常机械化的程序 mov ax,#0x0001 mov cr0,ax jmpi 0,8 empty_8042: .word 0x00eb,0x00eb in al,#0x64 test al,#2 jnz empty_8042 ret D1表示写数据到8042的P2端口 从16位模式切换至32位模式 Q1:为什么要从16位机模式切换到32位机模式? Q2:如何从16位模式切换至32位模式? Q3:实模式(16位模式)和保护模式(32位模式)的本质区别是什么? 是setup最后执行的指令,cs=8是用来查GDT表的,表内偏移为0 Setup模块分析 保护模式下的地址翻译 实模式下:cs左移4+ip 保护模式下:根据cs查GDT+ip 保护模式下中断处理函数入口 仿照gdt,通过int n的n进行查表 Setup模块分析 jmpi 0,8 cs=8, ip=0 16 8 0 GDT gdt: .word 0,0,0,0 .word 0x07FF, 0x0000, 0x9A00, 0x00C0 .word 0x07FF, 0x0000, 0x9200, 0x00C0 0x00 C0 9A 00 00 00 07 FF Q1:GDT初始化后有几个表项,每个表项多少位? Q2:GDT表项是如何解析寻址的??形成的地址是多少位? B7 B6 B5 B4 B3 B2 B1 B0 00 00 00 段基址 00 Setup模块分析 setup的工作小结 读取硬件参数,为将来建立操作系统打下基础 把system模块移至0x0000地址处,将来操作系统的核心代码就一直驻留在那里 然后启动了保护模式 最后应用了一条32位的汇编指令跳转到了0x0000地址处,即操作系统核心模块开始的地方。 System模块分析 system由许多文件编译而成,其中每一部分代码称为head.s Image disk: Image dd bs=8192 if=Image of=/dev/PS0 Image: boot/bootsect boot/setup tools/system tools/build tools/build boot/bootsect boot/setup tools/system Image tools/system: boot/head.o init/main.o $(DRIVERS) … $(LD) boot/head.o init/main.o $(DRIVERS) … -o tools/system Image为输入文件 为软驱A Makefile System模块分析 setup是进入保护模式,head是进入之后的初始化 startup_32: movl $0x10,
您可能关注的文档
- HyperMesh基础培训:总体入门、快捷键、几何清理、拓扑细化、面网格导论.ppt
- 2016年全国各地高考物理及题库.doc
- HYSYS应用导论.ppt
- 2016年全国各地中考分类(第1辑)第23章旋转题库.doc
- 2016年全国各地中考化学版分类(第一辑):第3章物质构成的奥秘题库.doc
- 2016年全国各地中考化学分类(第一辑)第12单元化学与生活题库.doc
- 2016年全国各地中考物理分类(第一辑)第3章+物态的变化题库.doc
- 2016年全国各地中考物理分类(第一辑)第5章+透镜及其应用题库.doc
- 参数统计推断方法讲义.ppt
- 2016年全国各地中考物理分类(第一辑)第15章电流和电路题库.doc
文档评论(0)