Skip to content
xsro lauAtUdisk edited this page Nov 26, 2020 · 11 revisions

vscode汇编插件

Marketplace Version Marketplace Installs Marketplace downloads Marketplace Rating

GitHub issues GitHub stars GitHub code size in bytes GitHub repo size

在VSCode中调用DOSBox(或msdos-player)来实现简单的x86(MASM/TASM)汇编操作

  • 学习微机原理时整理的部分笔记pages
  • 学习微机时整理的部分汇编代码cltasm

安装使用方法

  • 首先下载VSCode,前往官网直接点击DOWBLOAD下载对应版本即可,VSCode
  • 下载完成之后可以先安装对应的语言插件,如中文插件,在拓展商店里搜索chinese即可找到中文本地化插件
  • 下载安装本插件,在拓展商店中搜索MASM/TASM即可找到,安装即可
  • 使用vscode打开一个文件夹(或者在电脑自己喜欢的位置新建一个文件夹,然后用VSCode打开)
  • 新建一个汇编代码文件,以.ASM为后缀名保存
  • 右键选择run ASM code(运行当前程序(汇编+链接+运行)):一键汇编链接运行代码

编译运行代码

代码只包含单个文件

  • 代码只包含在一个文件中,这种情况推荐使用,右键命令。
  • 这些命令会将当前文件复制到插件的安装路径中,并通过挂载成为DOSBox中的D:\\T.ASM文件,这样可以不用避免汇编文件夹被生成的文件污染以及误操作破坏当前文件
功能 中文 描述
Open DOSBox 打开dosbox并配置环境(并挂载)
Run ASM code 运行当前程序(汇编+链接+运行)
Debug ASM code 调试当前程序(汇编+链接+调试)

代码分布在多个文件中Dosbox here

有时候源文件会使用诸如include的指令来包含其他文件或者库,这时候使用处理单个文件的方法就不能编译通过了。如dpisdaniel/assembly-pacmanWolfDroid/x86_Chess

  • 这时候可以通过命令面板(command palette,win下使用ctrl+shift+p打开)的dosbox here命令来操作代码
  • 这个命令会将当前编辑器的文件所在文件夹挂载到DOSBox的E盘,通过DOSBox中的指令来操作文件(显然,这时候操作的文件就是电脑中的文件,所以需要谨慎处理)

问题诊断功能

程序编译过程中难免会有出错,插件会对编译器产生的信息进行处理,显示到VSCode中,源信息会在输出(output)中显示,处理后的信息会在问题(problems)中显示。同时在文中也会标记出来

由于插件目前并不会实时地更新信息,所以有可能会觉得错误信息有些碍眼,可以在命令面板中输入找到清除MASM/TASM的所有问题信息来清除本插件输出的所有问题信息

使用MASM

默认情况下插件使用的是TASM组件来进行汇编操作,如果喜欢MASM的话可以在首选项-->设置 中选择并修改

非windows环境

插件在windows下编写的,如果不是windows环境,请确保安装了DOSBox,并在终端中可以直接输入dosbox,如果可以打开DOSBox,那么大概率可以使用本插件。Dosbox官网安装链接:downloads

插件工作原理

由于DOSBox的文件系统比较弱,所以插件使用的策略是先复制当前文件到插件的安装目录(姑且称为工作文件夹workspace)下并重新命名(目前命名为T.asm),再运行DOSBox等在workspace中进行操作,所以插件生成的所有文件都可以在这个文件夹中找到,并且每次执行操作,插件都会清理workspace保证操作不冲突。

  • 程序在这个我本来想尝试改vscode提供的globalstorage中,但是这样改变之后插件在使用msdos player来运行link的时候总是会失败。
  • 这样做有一个问题就是,插件目前无法分析文件的依赖关系,所以只会复制一个文件,如果文件中使用了include指令来包含其他的文件,或者需要多模块汇编的时候,插件目前无法得到想要的结果,在 dosbox here中插件也提供了一个可能的解决方案。

语言语法支持

插件提供一个languageID为assembly,别名为assembly(DOS)汇编语言支持,但是汇编语言种类繁多,目前的设定是在包含ASM后缀的文件下都能激活使用

assembly(DOS)中提供了一些悬浮提示,跳转,大纲功能,但是这些并不一定在所有汇编语言中都适用,我主要参照是我们的汇编原理书中的DOS汇编完整段定义部分,其中很大一部分代码来源于其他开源项目 假如是空白文件夹再新建ASM文件,可能插件不会激活,重启一下VSCode即可

功能列表

以下命令可以在打开了汇编文件的编辑器的右键菜单中打开,同时也可以在命令面板中打开

功能 中文 描述
Open DOSBox 打开dosbox并配置环境(并挂载)
Run ASM code 运行当前程序(汇编+链接+运行)
Debug ASM code 调试当前程序(汇编+链接+调试)

以下命令可以在命令面板中打开

功能 中文 描述
Clean all diagnose information generated by MASM/TASM 清除MASM/TASM的所有问题信息
Dosbox here: Open DosBox, Mount the path of the editor files's folder as E:\ and set the needed environment 打开DOSBox将当前文件所在目录挂载到E盘,并配置相关环境