当前位置:首页 > > 充电吧
[导读]1.最主要的就是那个jmp dword,一切都是为了Jmp做准备2.int 13h读取扇区,既可以读硬盘,又可以读软盘,应该是两个的驱动器号不同(这个还没搞清楚,现在只会读软盘)。用硬盘映像的时候,总

1.最主要的就是那个jmp dword,一切都是为了Jmp做准备

2.int 13h读取扇区,既可以读硬盘,又可以读软盘,应该是两个的驱动器号不同(这个还没搞清楚,现在只会读软盘)。用硬盘映像的时候,总是说找不到引导设备,不知道是哪儿的参数错了。

一些细节:

>cl是读取的扇区号,1就是第1个扇区,并不是从0算起。

>kernel.s生成的就只有16B,所以只读取16字节。(其他的好像是0,回来试试看)

>读取成功了,bochs有时候会告诉你成功了,有时候不会。(一次告诉我读取了16B,一次告诉我读取了17个扇区)。

3.复制kernel到0:0处

>0:0处在实模式下放了256个中断向量号,每个向量号4字节

>movsb会自动把si,di加1,所以千万不要inc si,inc di,多此一举(我画蛇添足时调试总是感觉怎么不对劲,si一下增加2了,我还以为inc指令有问题)

>复制完了后,有些中断向量号就被淹没了,不能用了。

4加载GDT

>注意lgdt时,加载数据的格式。数据地址越高,就在高位。

>>如 DW 0X0000 DW gdt+0x7c00,0x0000.最后形成的GDTR内容就是0x0000,gdt+0x7c00,0x0000

>gdt是便宜地址,所以要加上这个段的起始地址0x7c00

>代码段描述符的数据格式也要注意

>>DW 0XFFFF 0X0000 0X9E00 0X0000,和GDTR表的地址一样,高地址在高位(话说,bochs不是模拟x86的吗?x86的小端不是这样的吧?这个回来也要看看)

>代码段的描述符构造时也要仔细,小心,要不然bochs会出现一些段保护的错误。

5.操作cr0

>那个书上用as86汇编写的,貌似用了一个lmsw的命令,从来没见过。自己又是用nasm写的,开始觉得很不顺,什么破书,总是跟自己的不一样。网上又有人用AT&T汇编格式写了一遍,下载来看,发现整体的结构又变了。又看的头晕,一想自己吃饱了撑的,搞三种汇编干蛋阿,任何一种语法都不熟。就老老实实用nasm。后来想起来《自》的源码是用nasm格式的,于是下载下来找一下lgdt的用法。一下子就解决问题了(开始我是lgdt gdt,正确的是lgdt [gdt]),再后来发现用nasm的不少,可以google很多boot.s用nasm写的。不得不说,这个时候英语确实很重要,虽然google有翻译功能,但是翻译的不准,不是很爽。还好英语基本功还是有的,hiahia。在这期间,感觉新浪爱问真是一个很好的中文网站,很多资料上面都有,而且不吭爹,如果有网站投票的话,一定投他。www.nasm.us,一开始百度nasm官网都没百到。我很奇怪,百度上很多软件的官网排名还不如写这个软件使用心得的博客排名靠前,有的甚至百度不到。还是直接在google上直接英文搜索,很方便了。但是GOOGLE有时候又进不去,唉,恼火。(小技巧:用https://www.google.cn可以进,为什么这个协议就行的通呢?,不懂)。

6.jmp dword

>这一段属于16位和32位的混合编程,www.nasm.us上有介绍。

>其中在0x0008:0的8上我又折腾了很久,因为一开始以为第一个描述是0,第二个8,第三个16,第四个24。后来才想起来选择子的格式。(所以说,先把理论上的搞清楚,该背的要背)。DI13位,TI=0表示GDT,RPL

7.跳到kernel后

>本来是准备用int 10来显示一下字符串的,但是到了保护模式,中断向量号应该是8个字节的了,BIOS提供的应该不能用了吧,得自己写中断服务了。

8.一点感触

>以前看《自己动手写操作系统》的时候,看很多人说这本书好,作者以幽默的语言怎么怎么样。现在觉得真实坑爹,如果你调试半天还是看不出来哪儿错了,书上写的又不详细,百度百到的零零散散,正确性都没保障的时候,幽默顶个屁用阿。而且那本书的基础也不止只需要一点c语言和操作系统的知识,所以我很奇怪难道就没人跟我一样的感受吗?今天百度一些问题的时候,看到了有类似感受的,所以我觉得很奇怪为什么对《自》的评价我看到的都是一种声音:适合初学者。哼,童话里都是骗人的。

>今天google的时候,发现国外很多写OS的小组,貌似国内高校就没这么多的小组额。。。

>英语很重要。即使是写一个kid os,也要耐心和知识的积累。

>找书很麻烦,比如说对8253这些芯片编程以前没接触过,虽然学了汇编。但是不知道看什么书,于是百度吧,但是大家的说法又不统一,Intel的又全是英文,图书馆也没找到,学校外面又买不到,写信给intel领免费的三本这种事又觉得麻烦。唉,于是只能瞎找书,最后找到32位微型接口技术及应用这类书上了,勉强能够满足需求。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭