现在呢,大致流程写在下面:
首先,编写汇编代码,代码文件名为MyOS.asm,所有代码大致如下:
; 下面是标准FAT12格式软盘专用代码
DB 0xeb, 0x4e, 0x90
DB "MyOS_IPL" ; 启动区名称,必须8字节
DW 512 ; 每个扇区必须为512字节
DB 1 ; 蔟必须为1个扇区
DW 1 ; FAT的起始位置必须为1
DB 2; FAT的个数必须为2
DW 224 ; 根目录大小必须为224
DW 2880; 该磁盘的大小必须为2880扇区
DB 0xf0 ; 磁盘的种类,必须是0xf0
DW 9 ; FAT的长度必须为9
DW 18 ; 1个磁道有几个扇区必须为18
DW 2 ; 磁头数必须是2
DD 0 ; 不使用分区,必须是0
DB 0,0,0x29 ; 意义不明,固定
DD 0xffffffff ; 可能是卷标号码
DB "MyOS_SoDisk" ; 磁盘的名称,必须11字节
DB "FAT12 " ; 磁盘格式名称必须是8字节
RESB 18 ; 先空出18字节
; 下面一段是程序主体,意义不明
DB 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
DB 0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
DB 0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
DB 0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
DB 0xee, 0xf4, 0xeb, 0xfd
; 信息显示部分
DB 0x0a, 0x0a ; 2个换行
DB "HellloWorld"
DB 0x0a ; 换行
DB 0
times 510 - ($-$$) DB 0 ; 填写0,直到0x001fe
DB 0x55, 0xaa ; 必须保证第510字节(0x1fe)开始的地方是55 AA
; 以下是启动区以外部分的输出
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 4600
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 1469432
解释见注释,然后下载nasm编译器,加入系统路径后,执行:
nasm MyOS.asm -o MyOS.img
生成的MyOS.img即为系统镜像文件,然后下载Virtual Box,安装打开。
选择新建,设置好名称和存储路径,类型选择other,版本为Other/unknown,点击下一步,设置好内存后,选择不添加虚拟硬盘:
完成后,打开设置面板,点击存储,删掉控制器IDE,然后点击下面添加按钮->添加软盘控制器,新建一个控制器:
然后点击控制器后面的添加按钮,出现如下提示框,选择“选择磁盘”:
然后将上面制作好的MyOS.img选择进去,启动虚拟机,出现如下画面表示成功运行: