win10搭建x86汇编编程环境(st3+nasm+bochs)

最近看《x86汇编语言-从实模式到保护模式》一书,发现书中提供的编程环境有些麻烦,nasmide.exe在64位机器上不能使用,所以想利用sublime text3构建window下的x86的汇编编程环境,可以实现一键执行nasm编译,写入vhd,运行bochs的操作。

一、安装软件

  • booktool:书中提供的源码及工具包,下载地址:https://files.cnblogs.com/files/leec/booktool.zip
  • sublime text 3:文本编辑器,可以通过编写脚本实现编译,下载地址:http://www.sublimetext.com/3
  • nasm:书中提供的x86汇编编译器,下载地址:https://sourceforge.net/projects/nasm/files/
  • bochs:书中提供的虚拟机,相比VirtualBox小巧,下载地址:https://sourceforge.net/projects/bochs/files/bochs/2.6.9/
  • dd:window下仿Linux的磁盘管理工具,可以利用它来写入文件到vhd中,下载地址:http://www.chrysocome.net/downloads/dd-0.6beta3.zip

二、软件配置

  • nasmbochsdd的安装目录配置到系统环境变量中来,以便后续能在sublime text 3中直接调用,如图:
    -win10搭建x86汇编编程环境(st3+nasm+bochs)_第1张图片

  • 按照下载的booktool相关教程文件夹中《Bochs安装手册》介绍的方法配置bochs,并保存配置文件到bochs安装目录下,文件名保持默认bochsrc.bxrc。

  • 配置完毕后可在命令行下分别执行nasm -v,dd --help以及bochs -h,查看是否配置成功
    win10搭建x86汇编编程环境(st3+nasm+bochs)_第2张图片

  • (可选)为了能在后续使用之前的bochs配置文件启动bochsdbg,可以将bochs的配置文件bochsrc.bxrc的路径也配置到系统环境目录下并命名为BOCHSRC_PATH,如图:
    win10搭建x86汇编编程环境(st3+nasm+bochs)_第3张图片

三、配置sublime text3

  • 安装NASM语法高亮插件

    默认sublime text 3是不支持asm语法高亮的,需要安装插件(若没有插件管理器,百度sublime text3 package control)。

    ​ 在sublime text 3中使用Ctrl+Shift+P或Tools\Command Palette,输入install package 并选择它,稍等一会,在弹出的插件搜索框中搜索nasm,选中并安装,安装完在右下角选择Assembled x86(NASM),以后用sublime text 3打开汇编文件就能显示语法高亮啦。
    win10搭建x86汇编编程环境(st3+nasm+bochs)_第4张图片

  • 修改asm编译脚本

    为了实现对汇编源文件的编译,博主利用sublime text 3中的编译脚本实现了对.asm源文件的编译成bin文件,利用dd命令将bin文件写入vhd文件中,调用bochs启动虚拟机运行。

    ​ 用文本编辑器打开C:\Users\用户名\AppData\Roaming\Sublime Text 3\Packages\NASM x86 Assembly文件夹下的NASM.sublime-build(该文件是安装了NASM插件自动提供的,也可以自己创建并保存到package的User目录下),复制以下代码替换并保存,重启sublime text。

    如果想详细了解该脚本的原理,可以参考:http://www.sublimetext.com/docs/3/build_systems.html

    {
    	"cmd": ["nasm ", "${file}", "-o", "${file_base_name}.bin"],
    	"file_regex": "^(.+):([0-9]+)()?: error: (.*)$",
    	"working_dir": "${file_path}",
    	"selector": "source.asm,source.ASM",
    	
    	"variants": 
    	[
    		{	
    		"name": "complie",
            	"shell_cmd": "nasm \"$file_name\" -o \"$file_base_name\".bin -l \"$file_base_name\".lst"
    		},
    		{	
    		"name": "build and run",
            	"shell_cmd": "nasm \"$file_name\" -o \"$file_base_name\".bin -l \"$file_base_name\".lst & dd if=\"${file_base_name}\".bin of=..\\LEECHUNG.vhd & bochsrc.bxrc"
    		},
    		{	
    		"name": "bulid and dbg",
            	"shell_cmd": "nasm \"$file_name\" -o \"$file_base_name\".bin -l \"$file_base_name\".lst & dd if=\"${file_base_name}\".bin of=..\\LEECHUNG.vhd & start cmd /c bochsdbg -q -f \"%BOCHSRC_PATH%\""
    		}
    	]
    }
    
  • 之后打开booktool目录中的任一个汇编代码,如c05_mbr.asm,使用快捷键Ctrl+Shift+B,选择bulid and run,即可看到代码执行在bochs上的效果。

    • 命令解析:
      win10搭建x86汇编编程环境(st3+nasm+bochs)_第5张图片
    • 运行效果:
      win10搭建x86汇编编程环境(st3+nasm+bochs)_第6张图片
  • 不足之处:对于多个.bin文件的写入(如c08的代码),由于写入的位置不确定,就不能自动完成了,只能自己编译后使用书中带的fixvhdwr.exe来完成

四、注意事项

  1. 注意要配置成功nasmbochsdd这三个软件的环境变量,如果命令验证失败,请尝试重启计算机
  2. 如果要使用bochsdgb功能,请配置好bochsrc.bxrc的路径变量,注意保持文件名和路径的一致性
  3. 请保持LEECHUNG.vhd和代码的相对位置,即booktool中的目录结构,否则在执行dd命令时会出现错误
  4. 如果出现bochs运行时找不到hard disk或读取失败的现象,请检查LEECHUNG.vhd目录下有没有多出一个LEECHUNG.vhd.lock文件,删除即可。

你可能感兴趣的:(x86汇编)