30天自制操作系统——第一天
2017-01-23 21:40
197 查看
准备工作:
* virtual box* nasm
工作内容:
新建一个名为“helloos.asm”的汇编文件,代码如下:;hello-os ;TAB=4 ;以下这段是标准的FAT12格式软盘专用代码 DB 0xeb, 0x4e, 0x90 DB "HELLOIPL" ;(8字节)启动器名称,任意值。字符串长度固定 DW 512 ;每个扇区的大小,大小为512字节 DB 1 ;簇的大小,大小为一个扇区 DW 1 ;FAT的起始位置(一般从第一扇区起) DB 2 ;FAT的个数(必须为2) DW 224 ;根目录大小(一般设置成224项) DW 2880 ;磁盘大小(必须为2880扇区,1.44M) DB 0xf0 ;磁盘种类(必须为0xf0) DW 9 ;FAT长度,(必须为9扇区) DW 18 ;每个磁道扇区数(必须为18个扇区) DW 2 ;磁头数,(必须为2) DD 0 ;不使用分区,(必须为0) DD 2880 ;重写磁盘大小 DB 0,0,0x29 ;签名,固定 DD 0xffffffff ;序列号 DB "HELLO-OS " ;(11字节)磁盘名称,任意值。字符串长度固定 DB "FAT12 " ;(8字节)磁盘格式名称,任意值。字符串长度固定 RESB 18 ;空出18字节 ;程序主体 DB 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c DB 0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a DB 0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09 DB 0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb DB 0xee, 0xf4, 0xeb, 0xfd ;信息显示 DB 0x0a, 0x0a ;2个换行 DB "hello,world" DB 0x0a ;换行 DB 0 RESB 510-($-$$) ;填入0x00,直到510字节 DB 0x55, 0xaa ;即第一扇区最后俩字节是55AA ;启动区以外部分的输出 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 4600 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 1469432
通过nasm将上述文件编译成img文件,代码如下:
nasm -o helloos.img helloos.asm
在virtual box中新建一个操作系统,加入一个软盘,软盘的内容为上面生成的img文件
运行虚拟机,结果如下:
参考:http://blog.csdn.net/szq123456123/article/details/9004515
相关文章推荐
- 30天自制操作系统(第一天)
- 《30天自制操作系统》 第一天
- 《30天自制操作系统》第一天
- 《30天自制操作系统》第一天
- 30天自制操作系统第一天--helloworld
- 30天自制操作系统——第一天
- <30天自制操作系统>第一天
- 《30天自制操作系统》学习笔记——第一天
- 1.1_30天自制操作系统笔记_第一天_引导扇区
- 30天自制操作系统
- 《30天自制操作系统》笔记(11)——高分辨率
- 30天自制操作系统之第12天 定时器(1)
- 《30天自制操作系统》学习笔记(七)
- 《30天自制操作系统》1.初体验汇编程序
- <30天自制操作系统>第八天
- 《30天自制操作系统》 day5 小结
- 30天自制操作系统笔记第4天
- 《30天自制操作系统》01_day_学习笔记
- 《30天自制操作系统》12_day_学习笔记