一、环境搭建
必备:
nasm:将asm文件编译成纯二进制文件。nasm是只是一个编译器,没有链接功能。可以将汇编文件生成.o文件,但不能将多个.o链接生成二进制文件。即,不能进行多文件编译
masm:目前只用到了其中的link16,可以将16位汇编的目标文件(obj格式)链接生成二进制文件,可用于实模式汇编多文件编译
mingw:用到了其中的gcc/g++/ld/objdump/mingw32-make,将gcc/g++将C/C++代码生成.o文件,ld将其nasm生成的.o链接生成二进制文件,objdump输出二进制文件map信息,mingw32-make可以重命名为make用于自动构建
bochs:可单步调试(汇编)操作系统的虚拟机
可选:
运行虚拟机:VirtualBox; Hyper-V
编辑器:notepad++ + 二进制插件; VSCODE; VS2022。二进制操作还可以用WinHex
git:版本管理,代码托管到gitee
可能遇到的问题:
bochs:启动虚拟机依赖配置文件(默认名称bochsrc.bxrc)、虚拟硬盘(.vhd),还需要不存在.vhd.lock文件(如果系统异常退出需要手动删除)。虚拟硬盘可使用VirtualBox或者Hyper-V创建。似乎手动创建一个二进制文件,往里面随便塞数据就行,未经验证。
git/gitee:gitee需要有账号/登录才能下载,但胜在网络稳定。x86_asm仓我分成了4个分支,可以选择对应分支下载/clone
二、现状
分为4个分支,master(develop的稳定版本)、develop(开发分支,不稳定)、br_320_200(基本图形显示模式)、br_realmode(基本字符显示模式)
br_realmode:只有"Label Offset:2345D"是我代码的输出
br_320_200:图形显示模式,VGA基本显示模式,分辨率320x200
master:VESA高分辨率显示模式,800x600,段属性和写入位置没解耦,需要手动更改写入硬盘的位置以及从硬盘读入的位置
develop:以及将段属性和写入位置解耦,测试将rdata填充至4个扇区