SublimeText编写汇编语言的环境配置
一、需求说明:
为了满足学习汇编的需要,由于汇编语言的讲述基本上都是基于Dos的masm版本。因此需要一个Dos的环境。但自从XP以后(Win7,Win10),Dos已经消失。怎么模拟是一个问题。DosBox就是一个可以用来模拟Dos的程序,本身运行在Windows上。甚至可以玩游戏。
二、需要安装的系统:
Masm32--------默认安装位置:C:/masm32
DoxBox----------默认安装位置:C:/DOSBox-0.74-3
SublimeText
三、需要配置的内容:
DoxBoxAsm_Build.bat------------------编译和运行的命令行语句
DosMasm.sublime-build ---------------SublimeText构建系统(需要使用使用DosBoxAsm_Buid.bat)
默认存储位置:C:\Users\用户名\AppData\Roaming\Sublime Text\Packages\User
四、详细配置内容
(一) DoxBoxAsm_Build.bat的内容
@echo off
: -------------------------------
: Clean阶段,避免干扰
: -------------------------------
if not exist output mkdir output
cd output
if exist %1.obj del %1.obj
if exist %1.exe del %1.exe
: -----------------------------
: Complie
: -----------------------------
C:\Env\MasmEnv\masm32\bin\ml.exe /c ../%1.asm
: -----------------------------
: Link
: -----------------------------
if not exist %1.obj goto errasm
C:\Env\MasmEnv\masm32\bin\link16.exe %1.obj %1,,,,,
echo "Linking:Success"
: -----------------------------
: Run In DosBox
: -----------------------------
if not exist %1.exe goto errlink
C:\Env\MasmEnv\DOSBox-0.74-3\DOSBox.exe %1.exe
goto TheEnd
:errasm
: -----------------------------------------------------
: display message if there is an error during assembly
: -----------------------------------------------------
echo.
echo There has been an error while assembling this project.
echo.
goto TheEnd
:errlink
: ----------------------------------------------------
: display message if there is an error during linking
: ----------------------------------------------------
echo.
echo There has been an error while linking this project.
echo.
goto TheEnd
:TheEnd
cd ../
echo on
/
- DosMasm.sublime-build 内容:
{
"cmd": ["C:\\Env\\MasmEnv\\SublimeTextBat\\Build_DosBoxAsm.bat", "$file_base_name"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.asm",
"encoding":"cp936"
}
--------------------------------------------------------------
后记:
主要改进点在于构建的bat,该bat会自动根据错误中断构建过程,避免了直接堆命令行时,一个环节出错,但后面环节还在构建的问题。其实这个问题页可以通过nmake来做,但是没有bat方式省事,毕竟bat都比较熟悉。