要细揣摩了我们就没必,理解感化不大对操作系统的,在内存中的消息是什么只需要晓得最终存储,么位置在什,好了就,到他们的之后会用。
好都雅过的话前面的文章,出它要干嘛一下就能猜。 供给的读磁盘中缀法式?这个int 0x10也是一样的还记不记得之前有个int 0x13暗示触发 BIOS,供的显示办事中缀处置法式它也是触发 BIOS 提,显示办事里具体的读取光标位置功能而ah寄放器被赋值为0x03暗示。
前说的一句话这里又应了之,处都是 BIOS 的调包侠操作系统内核的最起头也处,的就用呗有现成。
下来接,术含量的工作了就要进行有点技,式的转换那就是模,改变为之后 32 位的庇护模式需要从此刻的 16 位的实模式,项大工程这是一!操作系统源码路程中也是我认为的这趟,出色的处所第一个颇为,好预备大师做!
OS 写好的中缀向量表给笼盖掉由于后面我们要把本来是 BI,粉碎掉了也就是给,的中缀向量表写上我们本人,不答应中缀进来的所以这个时候是。
自检后会主动初始化到文字模式这里申明一下:计较机在加电,模式下在这种,示 25 行一屏幕能够显,0 个字符每行 8,80 列也就是 。
上回书接,我们说到上回书,种从硬盘到内存的加载操作系统曾经完成了各,内存的复制以及内存到。
此至,t.s的任务就完成了整个bootsec,一个操作系统源码文件也是我们品读完的第。200这个位置起头施行之后便跳转到了0x90,于setup.s的开首这个位置处的代码就是位,着来看我们接。
道理一样同前面的,内存复制操作也是做了个,成果是最终的,往后不断到0x90000的内容把内存地址0x10000处起头,的最起头的0位置通盘复制到内存,这么个结果大要就是。
的几行代码再接下来,一样的逻辑都是和方才, 中缀获取点什么消息挪用一个 BIOS,存中某个位置然后存储在内,览一下就好咯我们敏捷浏。
个读小说的心态本系列会以一,的代码施行挨次从开机启动后,ux 0.11 全数焦点代码带着大师阅读和赏析 Lin,术细节和设想思惟领会操作系统的技。
供给了哪些中缀办事具体 BIOS ,和获取前往值若何去挪用,行寻找材料请大师自,说成果这里只。
512K 被system模块给占用了内存最起头的0到0x80000这 ,讲过之前,t 和 setup 之外的全数法式链接在一路的成果这个 system 模块就是除了 bootsec,作系统的全数能够理解为操。
c 言语进行编程因为之后很快就会用,以用变量的形式进行传送数据虽然汇编和 c 言语也可,接时做一些额外的工作但这需要编译器在链,是两边配合商定一个内存地址所以这么大都据更便利的还,这里存我往,这里取你从,事了就完。观的变量传送的体例了这生怕是最最原始和直。
着我一路你会跟,统从啥都没有起头看着一个操作系,它复杂又精巧的设想一步一步最终实现,但愿你能发出感慨读完这个系列后,码就是这破玩意本来操作系统源。
movsw熟不熟悉看到后面阿谁rep,动到0x90000的时候就是用的这个指令一起头我们把操作系统代码从0x7c00移,忆一下来图回。
也能够看出所以从这里,一个方式没什么区别这和我们日常平凡挪用,用法相当于入参和前往值只不外这里的寄放器的,中缀号相当于方式名这里的0x10 。
中缀法式施行完毕并前往时这个 int 0x10 ,值暗示光标的位置dx寄放器里的, dh 存储了行号具体说来其高八位, 存储了列号低八位 dl。
ov [0]那下一步m,在 [0] 这个内存地址处dx就是把这个光标位置存储。意注,们说过前面我,仅仅是偏移地址这个内存地址,个寄放器里存储的段基址还需要加上 ds 这,在0x90000处最终的内存地址是,光标的位置这里存放着,节制台的时候用到以便之后在初始化。
起头往上的位置0x90000,和setup法式的代码本来是bootsect,记实内存、硬盘、显卡等一些姑且存放的数据给笼盖了一部门现 bootsect 的一部门代码在曾经被操作系统为了。
了好,的图就好了记住上面,?之前的什么 0x7c00这回是不是又从头清晰起来了,过去式了曾经是,忘掉它赶紧,前看向!
种加载和复制因为之前的各,看起来很乱导致内存,波选择和拾掇了是时候进行一,下此时的内存结构我们从头梳理一。
|