orange's一个操作系统的实现--学习过程 第一章:a 最小的操作系统OS
--------------------全部都在windows环境下
需要准备软件工具
虚拟机Bochs (带有生成img文件的功能bximage.exe ) https://sourceforge.net/projects/bochs/files/bochs/
汇编语言编译器nasm https://www.nasm.us/pub/nasm/releasebuilds/
----------操作步骤
生成空白的镜像文件
使用汇编命令把源码生成汇编程序
把汇编程序写入到镜像文件
使用虚拟机Bochs,复制一份自带的虚拟机配置,加载镜像文件,查看结果
执行bximage.exe,选择fd,其他默认即可生成空白的镜像文件 a.img
nasm boot.asm -o boot.bin
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
需要准备软件工具
虚拟机Bochs (带有生成img文件的功能bximage.exe ) https://sourceforge.net/projects/bochs/files/bochs/
汇编语言编译器nasm https://www.nasm.us/pub/nasm/releasebuilds/
读写磁盘工具dd.exe Linux下有一个dd工具,用来直接读写磁盘。Windows下也有一个类似的工具,可以在如下的地址下载:http://www.chrysocome.net/dd
需要把工具路径都加入path----------操作步骤
生成空白的镜像文件
使用汇编命令把源码生成汇编程序
把汇编程序写入到镜像文件
使用虚拟机Bochs,复制一份自带的虚拟机配置,加载镜像文件,查看结果
执行bximage.exe,选择fd,其他默认即可生成空白的镜像文件 a.img
nasm boot.asm -o boot.bin
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
--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, OS world#"
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55 ; 结束标志
把a.img文件放到虚拟机下即可。效果如下: