masm

MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发。

masm32

MASM32 是一个为那些对学习或者编写 32 位微软汇编( MASM )感兴趣 的程序员提供的工作环境,它最流行的版本是 8.0 版,而我所知道最新版本是 9.0 版。但是请大家一定要注意,这里的 8.0 版和 9.0 版不是指 MASM 编译器 ( 即 ML) 的版本,而是 MASM32 开发环境的版本。

那么 MASM(ML) 编译器的版本到底有哪些呢?教学上常用的版本是 5.0 版的, 5.0 版之后有个 5.1 版本,在这之后,从 6.0 版开始 MASM 就改名 ML 了,因为它把编译和连接组合在一起了。而且 6.0 版还对汇编语言进行了大幅改造,使之支持高级语言的很多特性。 6.0 版之后常看到的就是 6.11 、 6.13 、 6.14 MASM32(V8.0 和 V9.0) 就是包含有 ML6.14 版 , 而不是 ML8.0 版。 6.14 之后就是 6.15 但不常见 , 我手头上有 6.15 的 ML 。但 Microsoft 从 6.15 版开始好象就不再单独发布 MASM 的开发工具包了。

以后的 ML 还有 7.0 、 7.1 版,最新的是 ML8.0 版。但它们都只包含在 Visual Studio.Net 和 Visual Studio 2005 里面。而且如果你 安装了 Visual Studio 2005 的 64 位开发环境,你将得到一个MASM for x64 ( ml64 .exe) 哈哈,各位这可是支持 Intel 和 AMD 的 64 位 CPU 的汇编语言编译器!有志于 64 位底层开发的赶快去试用看看吧。

MASM 编译器各版本的区别

版     本

简     介

MASM 4.00

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

MASM 5.00

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

MASM 5.10

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

MASM 5.10B

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

MASM 6.00

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

MASM 6.00A

未发售的版本

MASM 6.00B

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

MASM 6.10

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

MASM 6.10A

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

MASM 6.11

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

MASM 6.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

2000 年 4 月发布

nasm fasm yasm

这三个都是免费开源的汇编编译器,总体上都是采用的Intel的语法。yasm是从nasm的基础上开发出来的,属于同宗,使用了相同的语法,所以nasm的代码可以用yasm编译。

yasm虽然更新较慢,但对nasm一些不合理的地方进行了改良。从这个角度来看,yasm比nasm更优秀些,而nasm更新快,能支持更新的指令集,而且还支持Gas语法和AMD64(EM64T)架构,跨平台,支持多种目标文件格式。在Windows平台上,fasm是另一个不错的选择,平台支持比较好,可以直接用来开发Windows上的程序,语法也比较独特。在对Windows程序结构的支持上,fasm是3个免费的编译器里做得最好的。

yasm的官方地址:http://yasm.tortall.net/Download.html。使用很简单:将下载下来的yasm-1.2.0-win32.exe重命名为yasm.exe,放到D:\Program Files\Microsoft Visual Studio 9.0\VC\bin目录下即可。

nasm的官方地址:http://www.nasm.us/

gas

Gas即GNU assembler 是linux下的汇编编译器,使用的AT&T的语法。

各种汇编器masm masm32 fasm nasm yasm gas的区别相关推荐

  1. 对几个汇编编译器的初步评价(MASM/FASM/NASM/GOASM)

    MASM: 微软经典产品,仅支持Windows平台,唯一完美支持按需编译的编译器1,不支持输出bin格式.非绿色软件,受版权限制不能二次发行(SASM二次发行了多个汇编编译器唯独没有MASM). NA ...

  2. 【实用工具】之在VS中使用自定义工具配置nasm/yasm

    1 在VS中使用自定义工具配置nasm/yasm 1.1 方法一(参考开源工具)  可参考开源工具,具体做法是: (1).下载x264源码 (2).在windows下使用cmake便可产生vs的解决方 ...

  3. ASM Visual Pro 1.1.3.0支持主要的MASM,FASM,TASM编译器-SEO狼术

    ASM Visual Pro 1.1.3.0建造 开箱即用地支持主要的MASM,FASM,TASM编译器 ASM Visual Pro 1.1.3.0调试 支持同时运行第三方调试器WinDbg,Oll ...

  4. ffmpeg安装遇错:nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

    前言 centos 7 源码编译安装ffmpeg 错误 编译FFMPEG时,出现了错误 nasm/yasm not found or too old. Use --disable-x86asm for ...

  5. 解决nasm/yasm not found or too old. Use --disable-x86asm for a crippled build报错

    在编译ffmpeg时,执行./configure,报出了如下错误 nasm/yasm not found or too old. Use –disable-x86asm for a crippled ...

  6. FFmpeg编译报nasm/yasm not found or too old. 错误解决

    1. 下载代码:git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 2. cd ffmpeg,然后 ./configure,报错: nasm/yasm ...

  7. Mac FFmpeg编译和解决nasm/yasm not found or too old错误

    FFmpeg编译 下载代码:git clone https://git.ffmpeg.org/ffmpeg.git 然后输入命令进行编译:找到下载的目录下,然后用命令进入这个文件夹下cd ffmpeg ...

  8. nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

    接到开发需求 需要在服务器上安装 ffmpeg,安装方法如下: wget https://johnvansickle.com/ffmpeg/release-source/ffmpeg-4.1.tar. ...

  9. masm汇编之——过程与宏的区别

    定义方法 宏格式: 宏指令名 MACRO 形参···(宏定义体)ENDM 调用 宏名[形参] 作用:MASM.EXE会将调用到宏的地方用宏定义体完全替换.定义宏的地方不会生成机器码. 过程格式: 过程 ...

最新文章

  1. ci持续集成工程师前景_持续集成CI---失败原因
  2. leetcode97 交错字符串
  3. 日均数据量千万级,MySQL、TiDB 两种存储方案的落地对比
  4. Python selenium 滚动页面以及滚动至元素可见(转载)
  5. python手写实现均值滤波_python手写均值滤波
  6. 同名计算机无法加入域,客户端不能加入域解决方法(同名11850)
  7. AI伦理无法回避的5个问题:生物进化是否有方向?
  8. 计算机专业有哪些【含金量超高竞赛】?
  9. 数据分析型产品的需求分析6大步骤
  10. win7下用VS编译SBA(摄影测量光束法平差程序库)
  11. 求数组排序后相邻数的最大差值
  12. 文件浏览器ftp服务器,es文件浏览器查看ftp服务器
  13. DYA9面向对象中--方法的重写
  14. 电脑连蓝牙耳机,放音乐是用蓝牙耳机,浏览器不能用蓝牙耳机,用的扬声器,解决方案:
  15. 提高写作能力的15条技巧和建议
  16. 网站管理助手4.0 mysql_网站管理助手v4.0 建站流程
  17. CSRF 伪造跨域请求
  18. 用VB6亲身开发一个Windows软件(一)小引
  19. Photoshop 去除图片中文字六个方法
  20. pkpm快速入门教程_PKPM教程入门必知技巧

热门文章

  1. 误操作数据库的一个方法
  2. Java学习第三天160818 表单 框架 下拉列表等
  3. DXPerience6.x 使用体会(二)
  4. RAID磁盘阵列的原理与搭建
  5. JavaAppArguments
  6. ASP.NET程序中常用的三十三种代码
  7. Unity的Deferring the Resolution of Objects
  8. laravel debug,http模式,日志
  9. Kingbase和PostgreSQL中如何查看当前连接的进程信息
  10. iOS GCD中级篇 - dispatch_group的理解及使用