TASM汇编程序开发环境配置

本文介绍如何在电脑上搭建汇编语言开发环境。

由于汇编语言开发工具TASM和MASM只能在16位系统中使用,目前大多数电脑都是64位的,无法运行它们,所以需要使用模拟器来模拟16位环境。

如果嫌麻烦可以使用点解这个链接,利用终端自动化编译运行MASM/TASM代码,通过脚本(终端)简化一些过程

  • 仓库:VSCode用户可以使用这个仓库为模板,VSC-ASMtasks
  • 博客:notepad++配置自动化编译运行TASM的方法
  • 博客:notepad++配置自动化编译运行MASM的方法
  • 博客:VSCode配置自动化编译运行的简单方法
  • 博客:VSCode配置自动化运行较完备方法,推荐

需要准备的文件或者软件

  • Dosbox汇编工具运行所需的16位环境,可以使用 Dosbox 软件软件模拟
  • 汇编工具集 tasm+masm+edit下载
    • Borland公司的TASM汇编工具集

      • TASM.EXE汇编工具
      • TLINK.EXE链接工具
      • TD.EXE调试工具
      • 其他程序文件
    • 微软的MASM汇编程序集
      • MASM.EXE编译工具
      • LINK.EXE 链接工具
      • debug.exe 调试工具
      • 其他程序
  • 代码编辑器
    • 常用的代码编辑器(功能强大)

      • 微软公司的强大的vscode,官网、下载地址
      • 轻便强大的开源软件Notepad++、下载地址
      • linux中常用的[vim]
    • Dosbox中可运行的代码edit.com tasm+masm+edit下载

如果不配置一键运行可以参考一下内容,手动运行

使用Dosbox手动编辑运行程序代码

  1. 下载上文链接中的文件,安装编辑器,dosbox,将工具集解压
  2. 点击压缩包中的dosbox.exe即可运行dosbox,右击dosbox.exe可以添加到桌面和开始菜单,当然也可以去官网下载dosbox
  3. 点击dosbox后,在dosbox中通过如命令的形式进行操作

0 准备工作

1.编辑配置文件1(可忽略)

  • 可以通过编辑配置文件的方式,简化一些操作,如自动执行命令(比如自动挂载文件夹)、调整窗口大小详见附2
  • DOSBox.exe安装目录之下,会有dosbox.conf也可能后缀为.bat文件,以纯文本格式打开它,可以在里面配置。
  • 常用代码段见附2

2. 打开Dosbox

  • 如果是使用的是安装程序进行安装的,应该可以直接在开始菜单或者桌面快捷方式打开
  • 如果使用的是便携版程序,可以将程序解压到一个目录,找到DOSBox.exe 文件运行它,可以右击固定到开始菜单或者发送到桌面
  • 打开dosbox之后会有两个窗口,
    1. 一个是状态窗口,如下左图,可以看到目前的配置文件为C:\Users\ASUS\AppData\Local\DOSBox\dosbox-0.74.conf,可以修改它实现调整窗口大小等功能
    2. 模拟的dos窗口,在里面执行相关命令

在dosbox中执行命令以实现汇编链接运行调试等

i 建立dosbox访问电脑的文件夹的映射关系(挂载)

dosbox不可以直接访问电脑文件夹,所以打开dosbox后,需要将需要dosbox访问的文件夹告诉程序,如

  • mount c d:\DOS\asm告诉DOSBox我在dosbox中输入d实际上是指这个文件夹
  • mount d d:\DOS\code注意dosbox命令(包括文件路径)是不区分大小写的
    这里我假设我在d:\DOS\asm中放了我的TASM汇编工具集(下面重点介绍TASM;MASM类似)

1.编辑汇编程序

  • 可以在汇编工具集所在目录下使用记事本、vscode、notepad++等工具编辑源代码程序,文件后缀名改成.asm(注意在文件管理器的查看中勾选显示拓展名)以a1.asm为例。2

    • 将编辑好的代码保存到需要的文件夹重命名为.asm后缀
    • 如果看不到后缀名,在查看选项卡中勾选“隐藏的项目”复选框
  • 可以使用文件夹里面的EDIT.COM编辑源代码程序,在DOSBox命令行中输入edit进入程序,编辑完成后可以点击左上角FILE保存(save)、另存为(save as)、退出(exit)。
    • dosbox中输入edit进入edit程序
    • dosbox中输入edit a1.asm编辑这个文件,没有则为新建这个并编辑
    • 前提:edit相关程序edit.com 等在当前目录或者设置为了path环境变量

2. 编译运行程序

在dosbox中输入相关命令

2.1 使用TASM编译连接运行调试

  • 输入tasm.exe/zi a1.asm 汇编a1.asm为源代码文件
  • 输入tlink/v/3 a1.obj 链接程序,不加参数可能无法调试
  • 输入td a1.exe 调试程序
    注:此处后缀名均可省略,dosbox下总是不区分大小写

2.2 使用masm编译连接调试

首先进入到masm的文件夹中,使用mount d d:\asm\masm挂载,使用d:进入目录。

命令: 功能
masm name 得到目标程序文件即obj文件
link name 生成可执行文件即exe文件
name.exe 运行该程序,有结果就输入,
若需要查看存储器和寄存器情况,就需要进行debug模式了
debug name.exe 对指定程序进行debug
debug 不特定

根据不同的debug命令进行想要的操作
常用命令 debug模式下:

-g :执行完name.exe文件显示运行结果
-a :编写汇编命令
-t :单步执行
-p :直接执行完不是单步执行
-u :反编译
-r :查看修改寄存器的值
-d :查看内存单元
-e :修改内存单元
-? :查看指令帮助

最近使用的常用命令的详细说明:

-d:查看128个内存单元内容。
-d 段地址:偏移地址
查看指定地址128个内存单元的内容。
-d 段地址:偏移地址1 偏移地址2
查看指定地址1 到 指定地址2 内存单元的内容。
-d 段地址:偏移地址 位移量
查看指定地址开始的位移量个长度的内存单元内容
-t:ma
单步执行每条指令,每执行一条指令就显示寄存器内容和逻辑地址还有执行的指令。
指定地址1 到 指定地址2 内存单元的内容。
-d 段地址:偏移地址 位移量
查看指定地址开始的位移量个长度的内存单元内容
-t:ma
单步执行每条指令,每执行一条指令就显示寄存器内容和逻辑地址还有执行的指令。

附录

附1 dosbox命令

通常指令加上/?后可以查看对应的帮助信息,如type/?,但是在dosbox下运行的程序查看帮助的方式通常为/help,比如masm查看帮助需要使用masm/help
值得注意的是在运行的程序后加上程序所需的参数的时候需要使用的是反斜杠(back slash’’)而在指定目录的时候需要使用的是(forward slash’/’)

附1.1 dosbox常用命令解释

dosbox命令行不区分大小写但是运行程序的参数区分参数大小写
命令和程序只能调用当前盘符下面的文件或文件夹
MOUNT命令:将计算机中的一个目录制定为一个盘,如下图中的example就是将d盘的dosprogs目录指定位dosbox中的c盘

指定目录之后可以使用盘符加上冒号切换盘符,如z:,c:
DIR命令:查看目录,比如刚刚使用了C:切换到了C盘之后,显示的就是这个盘对应的MOUNT命令指定的文件夹里面的文件,也可以在DIR后面加上需要
CD命令,指定当前浏览的目录,比如刚刚使用了C:切换到了C盘之后,这时的当前目录为C:,使用CD MASM就将masm文件夹指定位当前文件夹
cd ,, #返回父目录
cd c:\codex设置当前目录为虚拟目录的c:\codex
运行程序 直接输入程序名即可运行程序,如:
TASM.EXE A.ASM这里两个后缀名通常可以省略,文件可以在当前文件夹子目录中,如MASM\MASM CODE\O1.ASM

附2 dosbox配置文件

2.1 [AUTOEXEC]自动执行(自重将常用文件夹挂载到doxbox)

在dosbox.conj中写入代码,dosbox打开时自动执行,例如

[AUTOEXEC]
mount c d:\DOS\asm
mount d d:\DOS\mario
c:

2.2 [sdl]调整dos窗口大小

在dosbox.conj 中写入

[sdl]
fullscreen=false
fulldouble=false
fullresolution=original
windowresolution=1080x800
output=opengl
autolock=true
sensitivity=100
waittrue
priority=higher,normal
mapperfile=mapper-0.74.map
usescancodes=true

调整分辨率在上面代码中的windowresolution中调整
点击Dosbox.exe就可以运行了,右键可以发送到桌面和固定到开始菜单

附3 dosbox快捷键

常用的dosbox快捷键有:

  • CTRL+F5dosbox自带的截图工具,以png格式保存截图到安装目录的capture文件夹之下
  • CTRL+F9强行关闭dosbox
  • CTRL+F10将鼠标固定到dosbox里面,或者解除固定

这里是DOSBox v0.74-3 Manual提供的快捷键表格,鼠标总是停留在doxbox中时可以使用ctrl+F10解决,使用ctrl+F10F11调整cpu

ALT-ENTER Switch to full screen and back. 全屏或退出全屏
ALT-PAUSE Pause emulation (hit ALT-PAUSE again to continue).
CTRL-F1 Start the keymapper.
CTRL-F4 Change between mounted floppy/CD images. Update directory cache for all drives.
CTRL-ALT-F5 Start/Stop creating a movie of the screen. (avi video capturing)
CTRL-F5 Save a screenshot. (PNG format)
CTRL-F6 Start/Stop recording sound output to a wave file.
CTRL-ALT-F7 Start/Stop recording of OPL commands. (DRO format)
CTRL-ALT-F8 Start/Stop the recording of raw MIDI commands.
CTRL-F7 Decrease frameskip.
CTRL-F8 Increase frameskip.
CTRL-F9 Kill DOSBox.
CTRL-``F10` Capture/Release the mouse.
CTRL-``F11` Slow down emulation (Decrease DOSBox Cycles).
CTRL-``F12` Speed up emulation (Increase DOSBox Cycles)3.
ALT-F12 Unlock speed (turbo button/fast forward)4
F11, ALT-F11 (machine=cga) change tint in NTSC output modes5
F11 (machine=hercules) cycle through amber, green, white colouring5

内容算不上是完全原创,算是整合吧


  1. 在软件安装目录下以及用户文件夹目录下都有配置文件,在打开的 ↩︎

  2. 也就是说编辑的源代码要和tasm.exe、tlink.exe、td.exe在同一目录之下,如果不这样做,可以通过在dosbox中将汇编工具集设置到path中等方法实现,
    ↩︎

  3. Once you increase your DOSBox cycles beyond your computer CPU resources, it will produce the same effect as slowing down the emulation. This maximum will vary from computer to computer. ↩︎

  4. You need free CPU resources for this (the more you have, the faster it goes), so it won’t work at all with cycles=max or a too high amount of fixed cycles. You have to keep the keys pressed for it to work! ↩︎

  5. These keys won’t work if you saved a mapper file earlier with a different machine type. So either reassign them or reset the mapper. ↩︎ ↩︎

搭建汇编语言开发环境总结 利用DOSBox+TASM/MASM相关推荐

  1. Windows10 下搭建汇编语言开发环境( 利用 DOSBOX 和 MASM32 )

    Windows10下搭建汇编语言开发环境(利用DOSBOX和MASM32):https://www.cnblogs.com/zyever/p/7919007.html 如何在win10 64位下搭载汇 ...

  2. Windows10下搭建汇编语言开发环境(利用DOSBOX和MASM32)

    ------------------------------------ 版权信息 ------------------------------------ 此文链接: http://blog.csd ...

  3. 利用vagrant快速搭建rails开发环境

    为什么80%的码农都做不了架构师?>>>    Deprecated 前言 当我们学习一门新的语言或技术的时候,最麻烦或比较浪费时间的事情就是搭建开发环境.而搭建开发环境与我们将要学 ...

  4. 利用Maven搭建Spring开发环境 【转】

    2019独角兽企业重金招聘Python工程师标准>>> 一.   概要说明 最近几天在测试Spring3.0的AOP功能,在测试功能之前,首先是要搭建出Spring3.0的开发功能. ...

  5. 在CentOS 6.2上搭建vim开发环境

    在CentOS 6.2上搭建vim开发环境 最后更新日期:2013-07-05 1.首先使用Ubuntu(所在ip为192.168.16.230)翻墙登陆http://www.vim.org/,下载其 ...

  6. 在Windows环境下搭建Android开发环境

    标题:在Windows环境下搭建 Android 开发环境 作者:CrazyPebble 时间:2011年2月28日 声明:此文在参考其他网上资料以及笔者实践总结写下,一来自己可以做一些总结,二来给跟 ...

  7. ubuntu下搭建android开发环境(转载)

    在ubuntu下搭建android开发环境,准备学习一下android开发. 1.安装JDK        首先到oracle的官网上下载linux版本的JDK(网址为:http://www.orac ...

  8. linux pip3使用清华源_Linux实战016:Ubuntu搭建python开发环境

    我们在安装Ubuntu系统的时候会自带安装python2.7和python3.6版本的Python解释器,直接执行"ptyhon"默认运行的是python2.7,只有执行" ...

  9. iis7 mysql_windows 7 下搭建php开发环境(windows7+IIS7+php+mysql)

    首先需要说明的是,基于IIS v6.0/v7.0(2008),可以支持的脚本相当完整,不仅支持Linux无法支持的asp/asp.net,还可以安装php.mysql.zend实现php环境.同时,利 ...

最新文章

  1. Python 玩出花儿,把罗小黑养在自己桌面
  2. java web手动部署_tomcat手动部署web项目的方法
  3. 把nc v6的源码看懂
  4. python增加一列数据_Python编程给numpy矩阵添加一列方法示例
  5. 【算法】排序算法——归并排序
  6. Python学习笔记——for循环和range函数
  7. The Internet Communications Engine (Ice) 跨平台异构通讯方案 第二弹-Hello world!
  8. 计算机网络的DIX,《计算机网络》期末考试试卷(B卷)
  9. IAR 8.3 for Arm 安装与注册
  10. navicat怎么导入sql数据库文件
  11. Java下载及环境配置
  12. 计算机里保存文件时没有桌面,电脑在保存文件时桌面怎么不见了怎么办
  13. 国内最新Unity3D视频教程合辑
  14. 文字加下划线单选按钮效果,RadioGroup实现
  15. laragon用php连接数据库,Laragon - PHP 集成环境 - 技术资源库 - by 安拓网络技术资源库 - by 安拓网络...
  16. 统计学:离散型和连续型随机变量的概率分布
  17. java web短信验证码_在Web项目中手机短信验证码实现的全过程记录
  18. 看电视剧《天道》一点感想 + 法兰克福美景Opencv聚类分析
  19. 计算机视觉技术应用于农业自动化,计算机视觉技术及其在自动化中的应用
  20. dmc预测控制 matlab,预测控制动态矩阵DMC算法研究分析及仿真.doc

热门文章

  1. 复杂系统学习(四):ODE模型II:流行病
  2. 【DNS解析】使用DNSPOD实现动态公网解析(DDNS)
  3. 实验四 交换机配置方式及基本命令的熟悉
  4. C++ 中vector基本用法及其insert()、begin()、end()、front()与back()的用法详解
  5. C语言:求最大公约数-更相减损法(循环自定义函数的定义与调用)
  6. 什么是ZYNQ?ZYNQ简介
  7. Levenshtein编辑距离算法的改进---剪枝优化
  8. 最小编辑距离算法 Edit Distance(经典DP)
  9. 如何查看linux是否安装jdk?
  10. BUCK电源输出过冲怎么解决