×

汇编语言 dos中ma**的配置教程

前端技术网 前端技术网 发表于2024-01-31 11:16:24 浏览772 评论0

抢沙发发表评论

一、汇编语言编译器的MASM编译器介绍

MASM是Microsoft公司推出的汇编编译器。它的版本从低到高经过了很多次的升级(微软的通病,升级补丁多如牛毛)。每次升级除了例行的错误修正外都增加了一些新的功能,以至于到最后高版本和低版本的语法和功能相差很多,向下兼容性也不好。低版本的MASM固然无法编译高版本的源程序,但高版本的MASM也可能无**常编译低版本的源程序,如MASM 4.0写的源程序常常无法在MASM 6.x上编译成功。在使用MASM系列编译器时,如果不先搞清楚特定的语法和编译选项可以在哪个版本上用,编译中就会错误连篇。所以在这里有必要了解一下MASM各版本的演变过程

下表列出了不同版本MASM编译器的区别。

汇编语言 dos中ma**的配置教程

版本

简介

MASM 4.00

这是最先广泛使用的一个MASM版本,适用于DOS下的汇编编程。它很精巧,但使用起来不是很智能化,需要用户自己一板一眼地写出所有的东西。很多教科书上讲的8086汇编语法都是针对这个版本的,对程序员来说。它只比用Debug方便一点点。

MASM 5.00

MASM 5.00比4.00在速度上快了很多,并将段定义的伪指令简化为类似.code与.data之类的定义方式,同时增加了对80386处理器指令的支持,对4.00版本的兼容性很好

汇编语言 dos中ma**的配置教程

MASM 5.10

对程序员来说,这个版本最大的进步是增加了对@@标号的支持。这样,程序员可以不再为标号的起名花掉很多时间。另外,MASM 5.10增加了对OS/2 1.x的支持

MASM 5.10B

1989年推出,比上一个版本更稳定、更快,它是传统的DOS汇编编译器中最完善的版本

MASM 6.00

1992年发布,有了很多的改进。编译器可以使用扩展内存,这样可以编译更大的文件,可执行文件名相应从Ma**.exe改为Ml.exe。从这个版本开始可以在命令行上用*.a**同时编译多个源文件,源程序中数据结构的使用和命令行参数的语法也更像C的风格。最大的改进之一是开始支持.if/.endif这样的高级语法,这样,使用复杂的条件分支时和用高级语言书写一样简单,可以做到几千行的代码中不定义一个标号;另外增加了invoke伪指令来简化带参数的子程序调用。这两个改进使汇编代码的风格越来越像C,可读性和可维护性提高了很多

MASM6.00A

未发售的版本

MASM 6.00B

最后一个支持OS/2的MASM版本,修正了上一版本中的一些错误

MASM 6.10

修正了一些错误,同时增加了/Sc选项,可以在产生的list文件中列出每条指令使用的时钟周期数

MASM6.10A

1992年发布,修正了一些内存管理方面的问题

MASM 6.11

1993年11月发布,支持Windows NT,可以编写Win32程序,同时支持Pentium指令,但不支持MMX指令集

MASM6.11C

1994年发布,增加了对Windows 95 VxD的支持

MASM 6.12

1997年8月发布,增加.686,.686P,.MMX声明和对相应指令的支持

MASM 6.13

1997年12月发布,增加了.K3D声明,开始支持AMD处理器的3D指令

MASM 6.14

这是一个很完善的版本,它在.XMM中增加了对Pentium III的SIMD指令集的支持,相应增加了OWORD(16字节)的变量类型

MASM 6.15

二、windows 10 汇编环境的搭建

1工具准备

1)下载DOSBOX

工具介绍:DOSBox是一个 DOS模拟程序,由于它采用的是 SDL库,所以可以很方便的移植到其他的平台。目前,DOSBox已经支持在 Windows、Linux、Mac OS X、BeOS、palmOS、Android、webOS、os/2等系统中运行。不少DOS下的游戏都可以直接在该平台上运行。

2)下载MASM32

工具介绍:MASM32是国外的MASM爱好者Steve Hutchesson自行整理和编写的一个软件包,目前最高版本为11r版。MASM32并非指Microsoft的MASM宏汇编器,而是包含了不同版本工具组建的汇编开发工具包。它的汇编编译器是MASM6.0以上版本中的Ml.exe,资源编译器是Microsoft Visual Studio中的Rc.exe,32位链接器是Microsoft Visual Studio中的Link.exe,同时包含有其他的一些如Lib.exe和DumpPe.exe等工具。

注意:也可以直接下载由参考资料3作者提供的ma**工具压缩包,里面包含必要的汇编、链接、调试工具(百度网盘下载)。

2安装工具

1)安装DOSBOX

安装下载到的DOSBox0.74-win32-installer.exe,直接一路Next完成安装。

2)配置DOSBOX

创建一个用于保存汇编工具(如MASM、Link、DEBUG等工具)和汇编文件(*.a**)的目录,如:E:\DEBUG。

打开DOSBOX的安装根目录(默认安装路径:C:\Program Files\DOSBox-0.74),双击文件DOSBox 0.74 Options.bat,运行该批处理文件后系统会用文本文档Notepad打开配置文件do**ox-0.74.conf。

将光标定位到do**ox-0.74.conf文件的[autoexec]节点(一般在该文件末尾),在文件中添加以下内容:

[plain] view plain copy

MOUNT C D:\DEBUG#将目录D:\DEBUG挂载为DOSBOX下的C:

set PATH=$PATH$;D:\DEBUG#将D:\DEBUG写入环境变量PATH中

3)安装MASM32

可解压安装下载到的ma**32v11r.zip,按默认配置安装即可。

安装结束后,可直接利用ma**32v11r中的gedit.exe程序编写、编译和链接a**汇编程序。

注意,MASM32的替代方案:可直接从其他电脑上**汇编工具DEBUG.EXE、EDIT.EXE、LINK.EXE、MASM.EXE等工具**到E:\DEBUG文件夹下(**时注意不能将32位系统中找到的上述工具**到64位系统中使用)

3样例程序

1)运行DOSBOX,在命令符C:\>下输入命令:EDIT文件名.a**,启动EDIT.EXE进入代码编辑状态,并输入如下样例程序:

[plain] view plain copy

code segment

assume cs:code

start:

mov ax,5h

mov bx,6h

add ax,bx

mov ah,4ch;调用DOS的4C号功能

int 21h;退出DEBUG状态,返回DOS

code ends

end start

2)保存文件后返回DOSBOX的命令行,输入命令:MASM文件名.a**,生成目标文件文件名.OBJ(生成过程中可以修改目标文件名,直接回车可保持默认目标文件名)。

注意:此时可能生成三个文件:*.obj、*.lst和*.crf文件。其中,列表文件*.lst和交叉引用文件非必选,前者是汇编语言汇编的机器语言与汇编语言对照表,可用于调试;后者给出了用户定义的所有符号和对每个符号定义、引用的行号。

3)输入命令:LINK文件名.OBJ,链接生成可执行文件文件名.EXE。

注意:由于在上述代码中未定义堆栈段,故在链接时会提示:LINK: warning L4021: no stack segment,因不会影响执行文件的生成,故暂时忽略。

另外,此时可能生成两个文件:*.exe和*.map文件。其中,地址映射文件*.map给出内存地址分配的有关信息。

4)输入命令:DEBUG文件名.EXE,在DEBUG的命令提示符“-”出现后开始调试,以下是部分调试命令及截图:

输入命令:R,查看程序运行前的寄存器组初始值;

输入命令:U,查看程序反汇编代码。从反汇编代码中可看出,变量会被汇编为直接寻址方式,使用变量在数据段内的有效地址表示。

输入命令:T,单步调试;

输入命令:D,观察内存变化(D后不带地址或范围,默认显示上一个D命令之后的80字节内容);

输入命令:G地址,程序从当前位置直接运行到指定地址处停下。

输入命令:E地址修改内存中的内容,如:E DS:0100,输入空格可逐个字节修改,回车停止修改。

文章分享到这里,希望我们关于汇编语言 dos中ma**的配置教程和汇编语言编译器的MASM编译器介绍的内容能够给您带来一些新的认识和思考。如果您还有其他问题,欢迎继续探索我们的网站或者与我们交流,我们将尽力为您提供满意的答案。