bochs汇编仿真环境配置
汇编语言开发环境搭建
简述
学习汇编的意义: 汇编语言有着简单的语法,它更加贴近硬件,而不像高级语言有着自己的语言抽象层
文章目的
学会用虚拟机搭建汇编开发环境,调试环境。主要是脱离Linux,windwos等操作系统,来了解计算机组成原理与操作系统等等知识。例如CPU如何操作磁盘,操作显卡,还有CPU实地址模式,保护模式等等知识。这些也为了以后深入Linux系统内核提供一个有效的基础。
如以下代码, nasm -f bin start.asm -o start.bin 编译后,在Linux or Windwos中其实都无法运行,因为没有提供操作系统调用的所需的信息,如果直接执行,那么操作系统将拒绝执行。但是自己创建一个虚拟机,是可以执行的。这一过程也脱离了操作系统,可以了解计算机原理,以及操作系统等等的知识。
mov ax, 0x30 mov dx, 0xc0 add ax, dx times 502 db 0 ;; 一个扇区512字节,这里作为填充 db 0x55 ;; 有效主引导扇区以 55H AAH 结尾 db 0xAA
关于主引导扇区(了解)
主引导扇区 : 处理器上电或复位后,如果系统由硬盘启动,那么ROM-BIOS将试图读取硬盘0面0道1扇区,这块就是主引导扇区 (Main Boot Sector) 缩写: MBR,判断主引导扇区是否有效方法:
- 主引导扇区有512字节
- 主引导扇区以55H AAH结尾
这个主引导扇区一般由操作系统负责,正常情况这块代码是检测操作系统,如果主引导扇区有效,那么将执行跳转指令 jmp 0x0000:0x7c00, 跳转到物理地址0x7c00处执行。
注意事项
注: 文章内容主要在 2.配置硬盘与启动
,这一小节详细说明了bochsdbg配置以及运行用户编写的汇编代码
实现效果: 启动虚拟机后可直接运行用户写的程序(如下图)
NASM 编译器
- 到NASM官网下载后直接安装
https://nasm.us/
- 安装后配置好环境变量
- 打开cmd :
Ctrl
+r
, 输入"cmd", 输入nasm -v, 正常显示版本信息说明安装成功(如下图)
Virtualbox 环境搭建
点击下载: Oracle VM VirtualBox 直接安装, 主要用于创建VHD固定硬盘
安装bochs IA-32仿真器
点击下载 : bochs: 开源 IA-32 仿真项目 (主页) (sourceforge.io)
1. 使用virtualbox创建VHD磁盘
分配VHD固定硬盘,大小20M足够
2. 配置硬盘与启动(重点)
打开Vhd Writer软件 获取VHD磁盘柱面,磁头,磁道等信息
配置bochsdbg所需启动磁盘, 上一步获取到的柱面,磁头,磁道等信息填入
设置启动方式
编写测试主引导扇区的汇编程序
mov ax, 0x30 mov dx, 0xc0 add ax, dx times 502 db 0 ;; 一个扇区512字节,这里作为填充 db 0x55 ;; 有效主引导扇区以 55H AAH 结尾 db 0xAA
编译汇编代码,得到.bin文件,并且写入刚刚创建好的VHD虚拟磁盘中
nasm -f bin start.asm -o start.bin
打开Vhd writer, 写入start.bin
启动bochsdbg(启动如果报错, 那么先检查配置,如果配置没问题那么查看VHD文件所在目录下有没有*.vhd.lock的文件,如果有删了,再启动就好了)
0x7c00处打断点,并执行
查看寄存器, 代码已生效
本文作者:随风丶oc
本文链接:https://www.cnblogs.com/jingpengblog/p/17609318.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步