好久没写文章了,以前说要学习C语言写自己的操作系统的,由于很多很多的“插曲”,拖到现在才实现,先看看成果吧:

自己到图书馆借了于渊写的《自己动手写操作系统》,以及参考了网上的教程,没想到很顺利。在学阿里云大学的:带你学C带你飞时学习了一下VIM。真的很不错,这几天都在看书,今天在知乎上看到,为何用Mac编程最好,我觉得不错,实践证明也是。
一开始还是很担心的,因为教程都是面向PC的,我用Mac是否能做到呢?现在发现担心是多余的。用vi写了boot.asm
org 07c00h ; 告诉编译器程序加载到7c00处
mov ax, cs
mov ds, ax
mov es, ax
call DispStr ; 调用显示字符串例程
jmp $ ; 无限循环
DispStr:
mov ax, BootMessage
mov bp, ax ; ES:BP = 串地址
mov cx, 16 ; CX = 串长度
mov ax, 01301h ; AH = 13, AL = 01h
mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
mov dl, 0
int 10h ; 10h 号中断
ret
BootMessage: db "Hello, One OS!" ; 想要开机后在屏幕上显示的字符串
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55 ; 结束标志
要编译,一查,哈哈,Mac自带nasm编译,nasm boot.asm -o boot.bin,结果报错:boot.asm:2: error: parser: instruction expected,自己检查汇编程序,发现复制的时候最上面的org写成了rg,修改保存,编译,成功。
然后下载Virtual box,安装,一切顺利。修改boot.bin文件为boot.img。准备加载软盘驱动器发现没有,到网上查了,方法很简单加载软盘驱动器,找了一下,发现在右击菜单里,加载启动!
没有加载过程,直接出现了文字“Hello,One OS!”,略有点不爽,不过成功迈出了第一步!OK!后来用vi修改boot.asm文件:Hello, I am Lichen, One OS!,结果只显示了部分。
这算是我写的第一个“操作系统”,如果可以称为操作系统的话,哈哈!
(PS:发觉VIM很强大,直接可以修改二进制文件,:%!xxd 命令完成,完全不需要像书中写的要下载各种软件!!!)
网友评论