一、编写最简单的操作系统,打印"Hello, OS world!" 效果图如下:
二、编写过程
说明
所有的工作都是在虚拟机上运行,不会对计算机造成任何损坏。整个编写过程大概30分钟内完成(包括安装软件)
准备工作
安装软件(我比较喜欢绿色的软件 我的资源里可以下载):
asm(汇编)编译软件:我选择nasm
虚拟机软件:我选择vmware
软盘镜像制作软件:FloppyWriter
开始编写boot sector
编写boot.asm(用windows自带的txt工具notepad即可)
打开txt编辑器
开始->运行->notepad
输入
;%define _BOOT_DEBUG_; 做 Boot Sector 时一定要讲此行注释掉
; 讲此行打开后用 nasm Boot.asm -o Boot.com
; 做成一个.COM文件易于调试
%ifdef _BOOT_DEBUG_
org 0100h ; 调试状态, 做成 .COM 文件, 可调试
%else
org 07c00h ; Boot 状态,BIOS 将把 Boot Sector 加载到 0:7c00
; 处开始执行
; 告诉编译器程序加载到7c00处
%endif
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, OS world!"
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制 代码恰好
; 512字节
dw 0xaa55 ; 结束标志
另存为boot.asm
编译
nasm boot.asm -o boot.COM
把boot.COM重命名为boot.bin(cmd下可以使用rename命令 当然直接右键重命名或者使用快捷键F2都可以 看个人习惯)
rename boot.COM boot.bin
制作软盘镜像
打开FloppyWriter.exe选择Write File to Image
选择源文件boot.bin
目标文件mmoos.img保存目录选择(任意位置 任意名字)
建立虚拟系统
打开vmware
建立一个空的操作系统
File->New->Virtual Machine
一路Next 其中会让你选择虚拟机的名字 自己随便起了我的是mmoos 选择内存 硬盘等等这些都无关紧要(因为我所做的是只需要打印一行字符串 并不是真正的操作系统)
最后把我们的虚拟软盘镜像加载即可,打开设置页面:
选择软盘Floppy 双击打开软驱设置页面:
选择Use floopy image file(使用软盘镜像)和Connect at power on(开机加载)
在Use floopy image file下面的Borwse(浏览)到你的镜像:
到此为止,就万事俱备了,只欠东风(东风就是启动你的虚拟机power on):
按绿色按钮,启动,OK,Have Fun!