《自己动手写操作系统》
org 07c00h mov ax,cs mov ds,ax mov es,ax call DispStr jmp $ DispStr: mov ax,BootMessage mov bp,ax mov cx,16 mov ax,01301h mov bx,000ch mov dl,0 int 10h ret BootMessage: db "Hello,OS world!" times 510-($-$$) db 0 dw 0xaa55
在自己电脑安装nasm。
官网下载地址:http://www.nasm.us/pub/nasm/releasebuilds/2.12/win64/
这样就编译为bin的可执行文件,通过软盘启动计算机,便是操作系统的雏形。
之后要做的是将这个bin文件转换为img文件,我花了几个小时在网上寻找解决办法,最后通过一个winhex的神奇小工具解决了。
具体办法:使用 WinHex 用winhex打开 t.bin 文件,按 ctrl+A 选择全部内容,然后点右键->edit- >copy all->hex values,然后用 winhex 新建一个文件,在弹出窗口选择大小为 1.44M。把刚才复制的十六进制值粘贴至新文件。保存为t.img。
用vmware虚拟机启动这个img文件。
首先创建一个空白的虚拟机,也就是创建时选择稍后安装os。
然后右键点击该虚拟机,选择设置。
在硬件里添加软盘->使用软盘影像->将刚才制作的t.img加载进来。
然后开启虚拟机,成功显示hello world文字。
原理分析总结:当计算机通电启动时,会加电自检,然后寻找启动盘,如果是从软盘启动,计算机会寻找0面0磁道1扇区。发现他如果以0xaa55结束会认为这是一个引导扇区。boot sector。
一个正确的boot sector除了必须以0xaa55结束,还应该包括至少512B执行码。
一旦BIOS发现了引导扇区,会将这512B内容加载至0000:7c00处。然后跳转至0000:7c00处将控制权交给这段代码。