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,判断主引导扇区是否有效方法:

  1. 主引导扇区有512字节
  2. 主引导扇区以55H AAH结尾

这个主引导扇区一般由操作系统负责,正常情况这块代码是检测操作系统,如果主引导扇区有效,那么将执行跳转指令 jmp 0x0000:0x7c00, 跳转到物理地址0x7c00处执行。

注意事项

注: 文章内容主要在 2.配置硬盘与启动,这一小节详细说明了bochsdbg配置以及运行用户编写的汇编代码

实现效果: 启动虚拟机后可直接运行用户写的程序(如下图)

NASM 编译器

  1. 到NASM官网下载后直接安装
https://nasm.us/
  1. 安装后配置好环境变量

  1. 打开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处打断点,并执行

查看寄存器, 代码已生效

posted @ 2023-08-06 12:50  随风丶oc  阅读(116)  评论(0编辑  收藏  举报