在学习汇编语言的过程中如何搭建汇编语言的开发环境是非常重要的,以下是个人在macos系统中搭建汇编语言开发环境的方法记录

汇编语言开发环境背景

由于我们学习的汇编语言8086/8088是16位的,这个属于最古老的dos里面操作系统了。对于现代的操作系统最低也时32位的了, 所以我们的汇编语言的开发学习环境的搭建一般都使用dosbox这个第三方的dos模拟工具来进行, 这个工具可以运行在目前主流的操作系统里面,包括windows, macos等系统。

需要准备的工具

1. 汇编用到的小工具: 汇编程序 masm.exe,  tasm.exe ; 链接程序  link.exe,  tlink.exe; 调试程序 debug.exe

这些个小程序基本都是通用的,大家可以从自己系统或者其他程序中找,或者从这里下载

https://download.csdn.net/download/tekin_cn/89837942

2. dosbox  用于汇编语言代码的的运行和调试模拟环境;

这个小工具是开源的, 可以自己到官方网站下载或者这里下载  https://download.csdn.net/download/tekin_cn/89837977

2. vscode 这个用于编写汇编代码, 这个是微软出品的免费开源IDE工具,

下载地址https://code.visualstudio.com/Download

在安装好vscode后还需要安装MASM/TASM这个插件, 用于将你自己写的汇编代码和dosbox连接起来,这样方便你在vscode里面直接调用dosbox运行和调试你自己写的汇编代码

工具安装方法

一、汇编用到的小工具 安装方法。

      这些小工具不需要安装,下载后解压到 ~/masm/bin 目录即可,这个目录用于我们后面的dosbox的PATH环境加载。

二、macos中的 dosbox 安装与配置

这个工具的安装很简单,macos里面直接将dmg里面的 dosbox.app 拖到应用程序里面即可。

dosbox配置:

macos下的dosbox配置 在macos下面,dosbox的配置文件为 "~/Library/Preferences/DOSBox 0.74-3-3 Preferences" , 修改方法为,使用 command+shift+g 进入~/Library/Preferences/目录,然后使用编辑器打开文件 DOSBox 0.74-3-3 Preferences , 找到 [autoexec] 然后将其修改为如下配置:


[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
#cls
#echo off
# 挂载主机上面的目录 ~/masm 挂载为为dosbox的d盘
mount d ~/masm
# 将挂载目录下的bin文件夹加入到dosbox的环境变量 这样我们就可以在任意的目录中运行bin中的应用了
set PATH=%PATH%;d:\bin;
# 默认进入d盘 code 目录,这个目录既~/masm文件夹下的code目录,需要自己创建用于存放汇编代码
cd d:/code
d:

上面的配置的目的有3个:

1. 将我们主机上面的目录 ~/masm 挂载为 dosbox模拟器的D盘,这样我们就可以在dosbox里面访问和操作我们主机里面的文件;

2. 将我们主机里面下载的汇编用到的小工具 加载到dosbox环境变量中。这样我们就可以在dosbox里面的任意地方使用我们下载的汇编用到的小工具了;

3. 自动帮我们切换到目录 ~/masm/code 在dosbox里面被挂载为d:/code 

更多的dosbox配置参考 Dosbox.conf - DOSBoxWiki

三、vscode中打开dosbox和连接插件的安装与配置

vscode的安装这里不再赘述,这里主要讲一下如何将vscode和dosbox连接起来的插件的安装和配置。

1. VSCode DOSBox 插件安装与配置

   这个插件的目的就是帮助我们在vscode中打开dosbox。

打开后,在dosbox里面输入打开参数  open -a dosbox --args 

2.  MASM/TASMv1.1.1 插件的安装和配置

这个插件的作用就是让我们可以在vscode里面编写和运行汇编代码,还有汇编代码的高亮显示等。

打开配置面板:

MASM/TASM配置, 这里的配置我们只需要配置一下3个地方,其他的保持默认即可,具体如下:

1. 指定汇编语言版本为TASM;

2. 指定dos模拟器为 dosbox; 

3. 设置汇编代码运行完毕后的动作为 pause

上面2个插件最终的用户配置信息参考:

{
    "editor.fontSize": 16,
    "makefile.configureOnOpen": true,
    "vscode-dosbox.command.dosbox": "open -a dosbox --args",
    "masmtasm.ASM.emulator": "dosbox",
    "masmtasm.ASM.assembler": "TASM",
    "masmtasm.ASM.mode": "workspace",
    "masmtasm.ASM.actions": {
        "TASM": {
            "baseBundle": "<built-in>/TASM.jsdos",
            "before": [
                "set PATH=C:\\TASM"
            ],
            "run": [
                "TASM ${file}",
                "TLINK ${filename}",
                ">${filename}"
            ],
            "debug": [
                "TASM /zi ${file}",
                "TLINK /v/3 ${filename}.obj",
                "copy C:\\TASM\\TDC2.TD TDCONFIG.TD",
                "TD -cTDCONFIG.TD ${filename}.exe"
            ]
        },
        "MASM-v6.11": {
            "baseBundle": "<built-in>/MASM-v6.11.jsdos",
            "before": [
                "set PATH=C:\\MASM"
            ],
            "run": [
                "masm ${file};",
                "link ${filename};",
                ">${filename}"
            ],
            "debug": [
                "masm ${file};",
                "link ${filename}.OBJ;",
                ">debug ${filename}.exe"
            ]
        },
        "MASM-v5.00": {
            "baseBundle": "<built-in>/MASM-v5.00.jsdos",
            "before": [
                "set PATH=C:\\MASM"
            ],
            "run": [
                "masm ${file};",
                "link ${filename};",
                ">${filename}"
            ],
            "debug": [
                "masm ${file};",
                "link ${filename}.OBJ;",
                ">debug ${filename}.exe"
            ],
            "support": [
                "jsdos",
                "dosbox",
                "dosbox-x",
                "msdos player"
            ]
        }
    },
    "masmtasm.dosbox.run": "pause"
}

从上面的内容我们可以看到 masmtasm.ASM.actions这个里面的默认配置是针对的jsdos的,这里的一些before, run , debug既对于环境配置, 代码运行和调试的一些命令,我们可以参考,我们这里的模拟器使用的是 dosbox ,上面的masmtasm.ASM.actions这里的东西可以不管。 如果我们希望使用MASM/TASM 这个插件的默认模拟器jsdos的话就可以参考我们上面的dosbox中的配置左调整,其原理都是一样的。

vscode中MASM/TASM这个插件的安装位置和文件参考

插件的安装位置: ~/.vscode/extensions/xsro.masm-tasm-1.1.1

文件内容参考:

由上图可见,我们还可将自己常用的汇编代码在这里的 snippets.json中定义为 代码片段,这样可以加快我们的汇编的开发。

在完成了上面的配置后我们的macos上面的通过vscode开发和调试汇编代码的工作环境就算是配置好了,下面我们就来通过运行一个汇编示例来测试一下吧。

macos + vscode tasm 8086/8088汇编语言开发调试环境测试

示例汇编程序, 将下面的代码保存到  ~/masm/code/hello.asm

;功能:显示提示PASSWORD ?,
;      键盘输入字符串与TEKIN比较
;      相同则输出 Hello world!
;      不同则返回DOS

D       SEGMENT
PASS1   DB 'TEKIN'         ;储存密码
N       EQU $-PASS1        ;密码长度
D1      DB 'PASSWORD ?',0DH,0AH,'$'
PASS2   DB 20
        DB ?
        DB 20 DUP(?)            ;键盘输入缓存
D2      DB 0DH,0AH,'OUTPUT: HELLO WORlD!$'
D       ENDS                            ;数据段
CODE    SEGMENT  ;代码段
        ASSUME CS:CODE,ES:D
BG:     MOV AX,D
        MOV DS,AX       ;D段地址送入DS
        MOV ES,AX
        LEA DX,D1       
        MOV AH,9
        INT 21H         ;显示输入提示
        LEA DX,PASS2
        MOV AH,0AH
        INT 21H         ;输入字符串
        LEA SI,PASS1
        LEA DI,PASS2
 
        MOV CX,N
        LEA DI,PASS2+2
        CLD
        REPZ CMPSB      ;输入字符串与原密码比较
        JZ DISHL
LAST:   MOV AH,4CH      ;返回DOS
        INT 21H
DISHL:  LEA DX,D2       ;屏幕显示helloworld
        MOV AH,9
        INT 21H
        JMP LAST
CODE    ENDS
        END BG;

然后在vscode中打开文件夹~/masm/code  ,  在选择 hello.asm文件后, 右键即可看到运行和调试 asm汇编代码的菜单,点击即可在vscode中运行和调试对应的汇编代码

vscode运行asm效果图

vscode debug汇编代码效果图

至此, macos下使用vscode来开发和调试汇编代码的开发学习环境就搭建好了, 可以开始你的汇编之旅了!

总结: 汇编语言的开发和调试环境的搭建的关键就在于dos模拟器的安装和配置, 因为我们的汇编程序 tasm.exe这个是运行在dos环境中的,而且8086/8088还是16位的,我们直接在64位的windows系统中是无法直接运行tasm.exe等程序的, 这就需要借助第三方的dos模拟器,如dosbox等来运行汇编程序。当然第三方的dos模拟器还有 dosbox-x, jsdos, msdos player 这些都可以作为汇编语言的dos模拟器环境,他们的原理和配置方式都差不多,而且这几个也都是vscode插件MASM/TASM所支持的dos模拟器。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部