编写自己的操作系统(一)

二、编写过程

说明

所有的工作都是在虚拟机上运行,不会对计算机造成任何损坏。整个编写过程大概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!

经验分享 程序员 微信小程序 职场和发展