汇编语言开发环境搭建
简述
学习汇编的意义: 汇编语言有着简单的语法,它更加贴近硬件,而不像高级语言有着自己的语言抽象层
关于主引导扇区
主引导扇区 : 处理器上电或复位后,如果系统由硬盘启动,那么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
0x7c00处打断点,并执行
查看寄存器, 代码已生效