这篇教程不需要你有什么编程基础,只需要对计算机结构有过大致的了解就可。本教程的基本原理取自《x86汇编语言-从实模式到保护模式》一书。本教程涉及的所有工具都已打包,链接附在文章末尾,感兴趣的小伙伴可以自行下载。废话不多说,直接上干货!
第一步->解压缩素材文件
解压完毕可以看到文件夹内包含了7个文件.
dd:空镜像制作工具
FloppyWriter:磁盘写入工具
git:终端操作软件
HackOS.iso:现成的空镜像
NASM:编译软件
VirtualBox6.1.32:虚拟机软件
VsCode:代码编辑器
第二步->搭建实验环境
1.双击VirtualBox6.1.32安装文件一键到底即可,记住安装路径
2.双击vscode安装文件一键到底即可。
3.双击git安装文件同样一键到底即可。
4.双击NASM解压后得到的文件夹 记住它的文件位置,我这里是D:\NASM。
5.dd和FloppyWriter都是可以直接运行的软件,创建一个文件夹名字为dd并把dd.exe放进去,我这里的路径是 D:\dd。FloppyWriter不用动留着备用即可。
6.右击桌面的计算机图标->点击属性->点击高级系统设置->点击环境变量->添加两个PATH路径,D:\NASM和D:\dd。
7.相同的步骤,为VirtualBox也添加一个path我这里是D:\virtualbox
俗话说:“巧妇难为无米之炊”,当以上操作全部完成以后,恭喜你,你所有的工具已经部署完毕!
第三步->创建程序
- 双击打开桌面的vscode图标
- 新建一个文件并输入以下代码:
addr equ 0xb800 ;equ定义常量
mov ax,addr ;ax寄存器存储显存地址
mov es,ax ;es附加寄存器指向显存mov byte [es:0x00],'H' ;赋ASCII码
mov byte [es:0x01],0x07 ;赋颜色
mov byte [es:0x02],'e'
mov byte [es:0x03],0x07
mov byte [es:0x04],'l'
mov byte [es:0x05],0x07
mov byte [es:0x06],'l'
mov byte [es:0x07],0x07
mov byte [es:0x08],'e'
mov byte [es:0x09],0x07
mov byte [es:0x0a],','
mov byte [es:0x0b],0x07
mov byte [es:0x0c],'W'
mov byte [es:0x0d],0x07
mov byte [es:0x0e],'o'
mov byte [es:0x0f],0x07
mov byte [es:0x10],'r'
mov byte [es:0x11],0x07
mov byte [es:0x12],'l'
mov byte [es:0x13],0x07
mov byte [es:0x14],'d'
mov byte [es:0x15],0x07
mov byte [es:0x16],'!'
mov byte [es:0x17],0x07 jmp $ ;锁住cpu
times 510-($-$$) db 0 ;将文件用0填充到512KB大小
dw 0xaa55 ;引导识别字节
- 填入代码后,点击vscode左上角的文件->另存为,我这里保存的路径为C:\Users\Administrator\Desktop\add.asm。该文件就是我们的系统程序主体,他的功能就是调用显卡向屏幕输出"Hello,World!"。
第四步->编译程序
1.在add.asm所在的文件夹内->右击鼠标->Git Bush Here 打开git终端
2.在终端输入:nasm -f bin add.asm -o boot.bin
- 编译后得到了一个boot.bin文件。
第五步->创建一个空磁盘
继续在终端输入:dd if=/dev/zero of=myos.img bs=1024 count=10000
制作一个大小为10MB的磁盘,当然你也可以不制作,随同的打包文件内有一个已经制作好的镜像,
与myos.img一样只不过名字不同而已。
第六步->把程序写入空磁盘的引导扇区中
这一步很简单,
->点击FloppyWriter运行
->Write File to Image
->选择编译好的boot.bin
->选择制作好的镜像文件myos.img或者HackOS.img
- 写入成功后会弹出如下提示。
第七步->创建一个虚拟机
- 什么你问我问什么不跑真机? 好吧,老是说,跑真机是可以的,但是对于我们来说这么折腾太麻烦,所以虚拟机是最好的选择,懂我的意思吧:-)
->双击打开vbox
->点击新建
->输入一个名称
->选定创建在哪一个文件夹内
->类型选择other
->版本选择other
->内存默认64MB就行
->不创建硬盘
->继续创建
- ok! 创建完毕,此时这个myos你可以认为它是一台少了硬盘的电脑,所以我们得给它整块硬盘
第八步->创建虚拟机的硬盘
- 为虚拟机创建硬盘的操作我们继续在git终端内操作
输入操作语句:vboxmanage convertdd myos.img myos.vdi
- 搞定,就是它了!接下来就是把硬盘装在电脑上。
第九步->开机运行
- 点击设置
- 点击存储->点击硬盘标志
- 点击注册
- 选中我们刚刚创建好的硬盘
- 现在硬盘给它安排了!
- 启动运行看一下
- 非常棒!!!祝贺你,你亲手制作并运行了一个只属于你自己的系统!
- 我引出开篇的目的只是为了抛砖引玉,底层知识对于小白来说是比较难理解的,
- 所以我觉得带领大家先动手实操一番,其实亲手实践对于原理的理解更有帮助。
- 关于此篇的原理部分我会在后面持续更新,当然我会用浅显易懂、循序渐近的方式带大家解开系统编程的神秘面纱。
本教程配套文件的链接: https://pan.baidu.com/s/11T6uVUsF8hslKeDse-1UoQ?pwd=w9z1