深度解析:x86 汇编开发环境搭建 ——VirtualBox 与 Bochs 双剑合璧(VirtualBox,Bochs虚拟机安装教程)

一、为什么选择这两款虚拟机?

在 x86 汇编语言开发中,VirtualBoxBochs是黄金搭档:

  • VirtualBox提供完整的 x86 硬件虚拟化能力,支持图形化操作系统运行,适合运行需要图形输出的汇编程序(如引导扇区、简单 GUI 界面),直接观察程序执行结果。
  • Bochs是专业级 x86 模拟器,内置强大的调试器,支持逐指令跟踪、寄存器监控、内存查看等底层调试功能,尤其适合操作系统内核开发和复杂汇编逻辑调试。
二、VirtualBox 安装指南(以 Windows 为例)
  1. 下载最新版本
    访问VirtualBox 官网,点击 “Download VirtualBox”,选择对应主机系统的安装包(如 Windows 主机选择 “Windows hosts”)。

 

  1. 执行安装程序

    • 双击下载的.exe文件,点击 “Next” 进入安装向导。
    • 选择安装路径(建议默认),勾选 “Create a desktop shortcut” 方便访问。
    • 安装过程中可能提示网络适配器配置,选择默认设置即可。
    • 安装完成后,重启计算机以加载驱动程序。
  2. 创建虚拟机

    • 打开 VirtualBox,点击 “控制” 按钮,然后点击“新建”按钮。
    • 输入虚拟机名称(如 “NANJIU”),类型选择 “Linux”,版本选择 “Ubuntu (64-bit)”。
    • 创建虚拟硬盘只需要20MB,还可以了(其实不是安装Linux系统)。
  3. 安装操作系统

    • 不用安装(后面我会用解释的)
三、Bochs 安装与配置详解
(一)Windows 平台安装
  1. 下载预编译二进制包
    访问Bochs 官网,进入 “See All Releases” 页面,选择 Windows 版本的安装包(Bochs-win64-2.6.11.exe)。

  2. 图形化配置工具

    • 安装完成后,运行bochsdbg.exe(带调试功能的版本)。
    • 在图形化配置界面中:
      • 磁盘设置:指定虚拟硬盘镜像路径(如E:\STUDY\study\虚拟系统\),类型选择 “vhd”。
      • 启动选项:设置第一启动设备为 “Disk”,跳过软盘检查。

保存以后启动就点 “bochsrc.bxrc”就可以了,就不用每次配置了。

看到这里大概大家都已经明白了吧,二个虚拟机用的是共同的虚拟盘,这样方便操作。

现在我来给大家介绍一下如何把我们生成的.bin文件写入到虚拟硬盘,当然我们是需要工具的,也就是李忠老师写的软件,我在之前的教程中发过,但是没有讲任何使用,因为在那个时候讲了也是白讲,因为用不到,所以没有介绍。现在我来补充一下

工具:网盘链接: https://pan.baidu.com/s/1pbWZ6f7F3lSruhjC4ORndg?pwd=difn 提取码: difn(点工具就是github)

fixvhdw这个有二个版本一个32,一个64位的,根据自己的需求选择(主要帮助您写入要执行的汇编.bin)

 Nasmide同样也是有二个版本,根据自己需求选择(点开图片的文件,里面有打开源文件和创建,保存的操作,还要最重要的编译操作也集成了)

我这里有一个.asm程序,帮助大家练习写入 ,把下面的文件复制到编译软件上面编译,最后按照要求把.bin写入,然后打开虚拟机查看

           ;从1加到100并显示累加结果
            jmp start

message     db '1+2+3+...+100='   ;等于同于 db '1', '+','2','+','.','.','.','+','1','0','0','='

start:
            mov ax, 0x7c0          ;设置数据段的段基地址
            mov ds, ax

            mov ax, 0xb800         ;设置附加段基址到显示缓冲区
            mov es, ax
            ;以下显示字符串
            mov si, message
            mov di, 0
            mov cx, start-message
showmsg:
            mov al, [si]
            mov [es:di], al
            inc di
            mov byte [es:di], 0x07
            inc di
            inc si
            loop showmsg

             ;以下计算1到100的和
             xor ax, ax          ;AX用于存放累加结果
             mov cx, 1
summate:
             add ax, cx
             inc cx
             cmp cx, 100
             jle summate

             ;以下分解累加和的每个数位
             xor cx, cx              ;设置栈段的段基地址
             mov ss, cx
             mov sp, cx

             mov bx, 10
             xor cx, cx
decompo:
             inc cx
             xor dx, dx
             div bx
             add dl, 0x30
             push dx
             cmp ax, 0
             jne decompo

             ;以下显示各个数位
shownum:
             pop dx
             mov [es:di], dl
             inc di
             mov byte [es:di], 0x07
             inc di
             loop shownum

             jmp $

             times 510-($-$$) db 0
             db 0x55, 0xaa           

VirtualBox显示结果(最后结束直接关闭就可以了,也就是强制关机):

 Bochs显示结果(操作方法:打开之前已经保存的配置 bochsrc.bxrc --> Start,然后再黑色的命令框输入:b  0x7c62 回车 ,最后输入:c,就是以下结果了):

 补充,如果要退出在命令框输入:q  ,如果不是命令关的就会虚拟机上锁,就会下次打不开了,解决方法就是找到自己虚拟盘的位置然后你就会发现多了一个文档,把他删掉就可以运行Bochs虚拟机了:

四、环境对比与最佳实践
特性VirtualBoxBochs
硬件模拟精度高(接近真实硬件)极高(可定制模拟参数)
图形支持完整(支持 3D 加速)有限(仅 VGA 模式)
调试功能基础(仅快照 / 日志)专业(指令级调试)
适用场景应用程序测试、GUI 开发操作系统内核开发、汇编调试

建议工作流

  1. 使用 VirtualBox 运行完整操作系统,验证汇编程序的实际执行效果。
  2. 在 Bochs 中启用调试器,对关键代码段进行逐指令分析。
  3. 结合bximagedd工具实现镜像文件在两个环境间的无缝迁移。

通过这种双环境配置,开发者可以兼顾高效开发深度调试,显著提升 x86 汇编项目的开发效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南玖yy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值