在拖了一个月后终于开始写《30天自制操作系统》的第一天内容记录,在写本文时对应的项目已经进行到第21天运行由C编写的应用程序,但也卡在该部分暂时没有进展。
开始自制操作系统的第一天,我们的目标是要实现启动虚拟机并在屏幕上打印hello, world
文字。下面就开始第一天的内容吧。
汇编实现
; 第一部分:FAT文件系统信息
DB 0xeb, 0x4e ; 跳转指令
DB 0x90 ; NOP指令
; 略
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 ; 两个换行
DB "hello, world"
DB 0x0a ; 换行
DB 0
RESB 0x1fe - ($ - $$) ; 填写0x00,直到0x001fe
DB 0x55, 0xaa
; 第四部分:启动区外的内容
DB 0xf0, 0xff,