在拖了一个月后终于开始写《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, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 4600
DB 0xf0, 0xff, 0xff, 0x00, 0x00,

本文记录了自制操作系统的第一天,目标是启动虚拟机并显示文字。介绍了汇编实现,包括FAT12文件系统头部信息、程序指令的主体和信息数据部分。接着,讲解了如何将汇编程序制作成镜像文件,并在QEMU模拟器上运行,最终成功在屏幕上显示输出。
最低0.47元/天 解锁文章
354

被折叠的 条评论
为什么被折叠?



