
自制操作系统
文章平均质量分 54
Adolph_
这个作者很懒,什么都没留下…
展开
-
一、从计算机结构到汇编程序入门
所谓开发操作系统,就是制作一张“含有操作系统,能够自动启动的磁盘“用一个所谓的二进制编辑器,可以写出引导磁盘启动的*.img文件。里面都是机器码,需要用户对照机器码手册写,例如写到168000后保存这个文件,文件大小刚好为1.4m也就是软盘容量大小。CPU是什么呢,中央处理单元,它的本质就是处理电信号,例如on和off,很没用把?我们平时看的视频,听的音乐其实他都不知道,他只会电信原创 2014-10-07 23:17:51 · 534 阅读 · 0 评论 -
三、进入32位模式并导入C语言
MOV AL,[ES:BX],代表ES*16+BX,因为早起并没有32位的寄存器,于是选用了一个段寄存器来代替,于是需要乘以16来转换。16进制乘以16就是左移一位。事实上,不管我们指定任何内存地址,都必须同时指定段寄存器,一般会省略DS:作为默认的段寄存器。例如MOV CX, [1234];其实是MOV CX,[DS:1234];EQU 相当于C语言里面的#define CYLS EQU原创 2014-10-07 23:19:14 · 542 阅读 · 0 评论 -
四、C语言与画面显示练习
向显存里面写数据画白屏!。汇编实现部分:; naskfunc; TAB=4[FORMAT "WCOFF"] ; [INSTRSET "i486p"] ; [BITS 32] ; [FILE "naskfunc.原创 2014-10-07 23:19:49 · 1188 阅读 · 0 评论 -
二、汇编语言和makefile入门
磁盘的第一个扇区为启动区,因为计算机都是首先从第一个扇区读写的,那么计算机首先读写第一个扇区内容,然后检查这个扇区最后俩个字节是否为55 AA,(早期作者定的),如果是,则为启动引导程序,如果不是,则报一个启动错误。IPL initial program loader启动程序加载器。因为启动区只有512字节,但是几乎所有的操作系统都不止这么小,于是解决办法就是将启动操作系统的程序放在此空间里,也就原创 2014-10-07 23:18:43 · 725 阅读 · 0 评论 -
五、结构体、文字显示与GDT/IDT初始化
试用结构体: 结构体的好处是,可以将各个参数一股脑传递进去,而没有结构体则需要一个一个传递。一个灵光一闪:原来一个大的软件,所有源文件全部编译进去成为一个整体存放在内存里,假如文件A中宏定义了一个地址#define RAM 0X1000, 编译好运行软件,在内存中0x1000就是RAM地址 在B文件中直接用各种类型指针指向0X1000来读取这里面的内容即是读取RAM的内容。如何原创 2014-10-07 23:19:17 · 1044 阅读 · 0 评论 -
六、分割源文件和中断处理
分割源文件:整理makefilebootpack.nas : bookpack.gas Makefile $(GAS2NASK) bootpack.gas bootpack.nasgraphic.nas : graphic.gas Makefile $(GAS2NASK) graphic.gas graphic.nasdsctbl.nas : dsctbl.原创 2014-10-07 23:21:11 · 702 阅读 · 0 评论