目录 1.制作真正的IPL IPL:启动区,启动程序装载器完整代码: ; haribote-ipl ; TAB=4 CYLS EQU 10 ; 声明CYLS=10 ORG 0x7c00 ; 指明程序装载地址 ; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code JMP entry DB 0x90 DB "HARIBOTE" ; 启动扇区名称(8字节) DW 512 ; 每个扇区(sector)大小(必须512字节) DB 1 ; 簇(clu…
1 制作真正的IPL IPL(Initial Program Loader),启动程序装载器,但是之前并没有实质性的装载任何程序,这次作者要开始装载程序了. 虽然现在开发的操作系统啥功能也没有,作者说轻轻松松做. 起始我觉得吧,有了启动程序加载器之后,相当于给了我们一个给CPU传送指令的入口,我们想让CPU干啥,就给它传指令和数据就可以啦.操作系统嘛,就是一个启动程序装载器调用的一个很大的.很复杂的函数而已,突然感觉自己有些升华了( ^_^ ). CPU就是一个干活很快的家伙,但是智商基本为0,…
这一次的学习相当曲折, 主要是因为粗心, Makefile里面的错误导致了文件生成出现各种奇奇怪怪的问题, 弄得心力交瘁, 因此制作过程还是尽量按着作者的路子来吧. 作者提供的源码的注释在中文系统下是乱码, 而且代码的分隔用了两个Tab, 在这里要处理一下: :%s/;.*//g 删除所有的注释; :%s/\t\t/\t 把两个Tab替换为一个Tab; 要让作者的nas文件和asm文件拥有相同的语法规则, 在_vimrc文件的最后一行添加 au BufNewFile,BufRead *.nas…
<30天自制操作系统>笔记(06)——CPU的32位模式 进度回顾 上一篇中实现了启用鼠标.键盘的功能.屏幕上会显示出用户按键.点击鼠标的情况.这是通过设置硬件的中断函数实现的,可以说硬件本身的设计就具有事件驱动的性质,所以软件层面上才有基于事件的消息机制. 但上一篇没有说明中断的来龙去脉,本篇就从头到尾描述一下CPU与此相关的设置问题. Segment 32位的CPU使用32条地址线,能区分232=4G个内存地址.每个内存地址都有1Byte的内容. 分段,就是将4GB的内存分成很多块(blo…
<30天自制操作系统>笔记(02)——导入C语言 进度回顾 在上一篇,记录了计算机开机时加载IPL程序(initial program loader,一个nas汇编程序)的情况,包括IPL代码(helloos.nas).编译生成helloos.img文件.用虚拟机QEMU加载helloos.img.制作U盘启动盘和用物理机加载helloos.img. 计算机启动时会自动加载和执行IPL程序,但IPL程序只能占用512字节.若直接用IPL写OS,空间不够用.所以IPL程序一般用于将真正的OS程序…
暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078    ,更多学习中的问题.资料,群里分享 environment:开发环境:ubuntu 第八天的学习思考: 关于鼠标是怎么移动怎来的 思考过程. 现在忘掉作者的代码思路,如果是我们自己写代码,鼠标指针应该怎么样才能动起来呢? 我的思路: 其实让鼠标指针动起来真的非常简单,只需要改变下面函数中的mx,my变量,也就是鼠标的position变量,鼠标指针就会移动了.但是在移动前一定要把原来鼠标指针出现的位置填充为背景 色,…
30天自制操作系统(linux环境)--第一天 我是在CentOS的环境上面实现的,使用ubuntu的环境也是类似的 第一步:因为要对二进制文件进行编辑,所以安装二进制编辑器hexedit(当然其他的也可以),安装命令 yum install hexedit 第二步:对生成的软盘镜像进行仿真运行,使用虚拟机,因为我本地是使用VM进行的虚拟机,所以直接使用VM也可以 具体过程如下: 第一步:创建一个img文件 touch hello.img 第二步:编辑该文件,输入512字节的内容(这512字节的…
<30天自制操作系统>一书中第1天和第二天中有关汇编语言的程序的理解 ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以下的记述用于标准FAT12格式的软盘 JMP entry DB 0x90 DB "HELLOIPL" ; 启动区的名称可以是任意的字符串(8字节) DW 512 ; 每个扇区(sector)的大小(必须为512字节) DB 1 ; 簇(cluster)的大小(必须为1个扇区) DW 1 ; FAT的起始位置(一般从第…
暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078    ,更多学习中的问题.资料,群里分享 environment:开发环境:ubuntu 第九天的课程已学完,确实有点不想写这个笔记了,因为开学了,还要学习课业上的压力,转博了压力山大啊. 这一天的课程最难的我感觉是后面的memory free的部分,这一部分有很多已经没有接触到的东西,所以感觉比较难. 内存的管理在任何os中都是一个重要的问题. 还是按照作者的书本上第九天的顺序的来做笔记吧: 1:整理源文件部分,这一部…
转自:http://www.cnblogs.com/bitzhuwei/p/OS-in-30-days-01-hello-bitzhuwei-OS.html 阅读目录(Content) 最初的OS代码 虚拟机加载helloos.img 真机加载helloos.img 制作启动盘 真机启动 总结 <30天自制操作系统>笔记(01)——hello bitzhuwei's OS! 回到顶部(go to top) 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c0…