使用Virtualbox调试自制操作系统

自制操作系统,如果每次都用物理机调试,未免太慢了,《30天自制操作系统》里使用的PC模拟器QEMU软件,但是实际上,使用虚拟机是一个很不错的选择,功能强大,调试方便。
以下实现一个简单的hello world用例,代码来自《30天自制操作系统》。

1.生成镜像文件

; hello-os
; TAB=4

    ORG     0X7C00          ; 指明程序装载地址

; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code

        JMP     entry
        DB      0X90
        DB      "HELLOIPL"      ; 启动扇区名称,必须是8字节的,不满8字节就用0填满
        DW      512             ; 每个扇区(sector)大小(必须512字节)
        DB      1               ; 簇(cluster)大小(必须为1个扇区)
        DW      1               ; FAT起始位置(一般为第一个扇区)
        DB      2               ; FAT个数(必须为2)
        DW      224             ; 根目录大小(一般为224项)
        DW      2880            ; 该磁盘大小(必须为2880扇区1440*1024/512)软盘大小固定为1440k
        DB      0XF0            ; 磁盘类型(必须为0xf0)
        DW      9               ; FAT的长度(必须为9个扇区)
        DW      18              ; 一个磁道(track)有几个扇区(必须为18)
        DW      2               ; 磁头数(必须为2)
        DD      0               ; 不分区,必须为0
        DD      2880            ; 重写一次磁盘大小
        DB      0,0,0x29        ; 意义不明(固定)
        DD      0xffffffff      ; (可能是)卷标号码
        DB      "HELLO-OS   "   ; 磁盘的名称(必须为11字节,不足填空格)
        DB      "FAT12   "      ; 磁盘格式名称(必须是8字节,不足填空格)
        RESB    18              ; 先空出18字节

;程序主体
entry:
        MOV     AX,0            ; 初始化寄存器
        MOV     SS,AX           ;
        MOV     SP,0X7C00
        MOV     EX,AX
        MOV     ES,AX
        MOV     SI,msg

putloop:
        MOV     AL,[SI]
        ADD     SI,1
        CMP     AL,0
        JE      fin

        ;这段代码用来显示一个字符
        MOV     AH,0x0e         ; 显示一个文字
        MOV     BX,15           ; 指定字符颜色
        INT     0x10            ; 调用显卡BIOS
        ;循环
        JMP     putloop

fin:
        HAL                     ; 让CPU停止,等待指令
        JMP     fin             ; 无限循环

msg:
        DB      0X0A,0X0A       ; 换行两次
        DB      "HELLO WORLD!"
        DB      0X0A
        DB      0

        RESB    0x7dfe-$		; 用$可以提高程序健壮性  程序是从0x7c00开始的
        DB      0x55, 0xaa      ; 软盘的第一个512扇区的最后两个字节必须是0x55aa,0x55aa代表这是一个启动程序

编译完成之后,生成.img文件。这个过程可以参考《30天自制操作系统》。如果是物理机,则需要把该镜像文件烧到软驱上,但是现在很少有软驱了。

2. 创建虚拟机

在VirtualBox里新建一个虚拟机,安装的操作系统选择other,并且不创建虚拟盘(后续手动加载软驱)。
这里写图片描述

3.加载镜像文件

然后加载刚刚生成的img文件,IDE控制器可以删除,因为暂时用的是软驱启动。这里写图片描述

4.启动虚拟机

启动该虚拟机,就可以看到helloworld字样了。
这里写图片描述

DONE~

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值