刚开始学于渊的《一个操做系统的实现》,动手写一个能够显示Hello,World的20行代码的操做系统,其实只是个引导盘。html
当计算机电源被打开后,它会先进行加电自检(POST),而后寻找启动盘,若是是选择从软盘启动,计算机就会查找软盘的0面0磁道1扇区,若是发现它以0xAA55结束,则BIOS认为它是一个引导扇区,而后BIOS就会把引导扇区的前512字节的引导代码拷贝到内存的0000:7c00处并将控制器完全交给这段引导代码。编程
因书中说明要使用到软盘,可是在人工智能盛行的2018年哪里还有软盘,因此我尝试下虚拟机上模拟软盘运行,并最后获得的本身想要的结果。
如今将本身的操做实践记下,为本身和读者提供参考。函数
本次操做是在Mac电脑上执行的,因此其余系统可能会有些不一样。人工智能
建立文件名为boos.asm的引导文件,代码以下:spa
org 07c00h ;告诉编译器加载到07c00h处 mov ax, cs mov ds, ax mov es, ax call DispStr ;调用显示字符串函数 jmp $; 无限循环 DispStr: mov ax, BootMessge mov bp, ax mov cx, 16 mov ax, 01301h mov bx, 000ch mov dl, 0 int 10h ret BootMessge: db "hello world!" times 510 - ($ - $$) db 0 dw 0aa55h
编译代码生成boot.bin文件操作系统
制做一个包含boot.bin的镜像文件boot.imgcode
作好了大小为512B的包含如上引导代码的镜像文件boot.img。htm
能够在百度软件中心下载VirtualBox的mac版本,下载后直接点击安装便可。blog
建立虚拟机内存
启动顺序中只选择软驱,将启动EFI选项去掉
选择软盘控制器并添加软盘,将引导程序添加到虚拟软盘中。
点击OK完成设置,而后点启动,就能够看到Hello,World了。
用VMWare运行简单的引导代码