MASM

news/2025/3/29 8:35:04/

MASMMicrosoft Macro Assembler 的缩写,它是 微软 为 x86 微处理器家族,所写的一套巨集组译器。它最初是用来发展在 MS-DOS 上面执行的软体,同时,它也该系统最流行的组译器。

它支援的巨集很灵巧,既广泛又多样性,结构化程式的惯用语法,包含高阶架构式的回圈、程序呼叫,以及轮替 (alternation)(因此,MASM 算是高阶组译器的一个范本).

目录

 [隐藏] 
  • 1 竞争
  • 2 支援 MASM 的专案
  • 3 MASM 的版本
  • 4 支援
  • 5 外部联结

[编辑] 竞争

在 1990 年代初期,不管如何,有一些可供选择的组译器,像是 Borland TASM、共享版的 A86,以及(在 90 年代末期)NASM,都开始取得 MASM 的一些市场份量。但是在 1990 年代终,有两种因素,使得 MASM 保住大部分的市场份量:

一是,微软停止把 MASM 作为商业产品一样的出售,并开始当成免费散布的 DDK(驱动器发展套件)之一部分;其次,MASM32 开发包、Iczelion's Win32 教材的出现,让视窗应用程式的设计,更方便使用 MASM.

后来在 2000 年,MASM 6.15 的发行,一样是 Visual C++ Processor Pack 的一部份,费用全免。结果,在 Visual C++ 6.0 后来的所有版本,所包含的 MASM 之版本,都相等该 Visual C++ 的版本。后来在 Visual C++ 2005,64 位元版的 MASM 出现了(档名为 ml64.exe)。加上有庞大数量已安装 MASM 的用户群基础,这些因素,使得MASM仍能继续生存而不被淘汰。

[编辑] 支援 MASM 的专案

有许多正在进行的软件开发专案,都有支援到 MASM,其中包括 IDE(如 WinAsm Studio,RadASM)、除错器(像是 OllyDbg),以及 反组译器(如 IDAPro, Interactive Disassembler)

为了 MASM 使用者的方便,有MASM32的专案把程序员所写的程式库 (library)、程式范例 (sample code) 以及说明文件集合在一起。也有很多网上论坛在支援 MASM。

这些也都是沿习着着名的产品,如 Visual Basic、Visual C++、EasyCode 的 IDE 一样,为 MASM 提供 视觉化 (visual) 的能力。虽然这个产品上了年纪,但它仍然是最受各方支援的组译器。

[编辑] MASM 的版本

  • 商业软体时期的 MASM 主要版本:
    • 4.x 1980 年代末期最流行的版本,很多组合语言入门书都以它为范本。
    • 5.x 开始强化组译器简易指令(点指令),以简化程式架构。稍晚的组合语言入门书亦大量运用此一版本。
    • 6.x 版本为了支援 Windows,有几个重大特色:
      • 支援 flat 与 386 以上 CPU保护模式。
      • 整合 PWB(Programmer's WorkBench) 开发环境。这软体在同时期的 Quick BASIC 也找得到。
      • 支援 DOS Extender,内建 DOS/16M。
      • 开始支援 OS/2 与 WinAPI。
      • 简易指令加入流程控制叙述,如 .IF、.While、.Exit......等。
      • 强化对外部函式库的支援命令,如 proto 与 invoke 等指令,其中最核心的是将 proc 指令包装成符合高阶语言风格(支援 C 与 Pascal 风格)的形式,且 invoke 指令重新包装 call 与 push/pop 指令,可以更直观、高阶地运用函式。这对呼叫高阶语言写成的函式、特别是繁复的 WinAPI 非常重要。
      • masm 与 link 整合为 ML。
      • NMake 的 makefile 描述结构也产生了巨大的变化。

单独销售的最终版本 MASM 是 6.11。自从微软停止 MASM 单独销售之后,至今他们也更新了几次的 MASM 6.x 版。

虽然 MASM 已不是商业软体,但微软仍继续支援它,因为在微软内部,还是有大量以组合语言撰写的程式码。

  • 6.15 版是放在 Visual C++ 6.0 Processor Pack 中。
  • 7.0 版是放在 Visual C++ .NET 2002。
  • 7.1 版是放在 Visual C++ .NET 2003。
  • 8.0 版是放在 Visual C++ .NET 2005,它也可以组译 x64 的程式码。

在这些新版 Visual C++ 的 bin 目录中,皆有 ml.exe。Visual C++ .NET 2005 的相同目录,还有一个 ml64.exe,它可以组译 x64 的程式码。相关的说明,都包含在这些新版 Visual C++ 的说明文件里。

有些新版的 MASM,也会放在微软的 SDK 和 DDK 中。 在VisualStudio2010中可用如下方式运行MASM(ML.exe):

   [SetupDir]\VC>ML [SourceFile]

[编辑] 支援

虽然有传言说,微软不再支援发展组译器,事实上,微软是继续支援发展这个产品。大致来说,支援仅限于添加新的指令集,如出现较新的处理器,以及加强支援 64 位元;往后将不会见到此组译器被彻底的改头换面。

[编辑] 外部联结

  • MASM32 Homepage
  • Free MASM Source Code
  • PC Benchmarks For 64
  • 开始进行 64 位 Windows 系统编程之前需要了解的所有信息

http://www.ppmy.cn/news/656612.html

相关文章

Bootstrap基础

目录 什么是bootstrap? 如何引入bootstrap? 栅格系统 表单 按钮 按钮组 导航 导航栏 面板 表格 其他组件 我会记录一下学习bootstrap时经常会使用的一些东西在这里面 什么是bootstrap? 前端框架,优点是简洁且灵活&…

在 TypeScript 中有效地使用 keyof 和 typeof 来表示类型

在本文中,我们将学习如何通过组合类型运算符和枚举来提取和声明常量类型typeof,以使您的代码库得到优化。keyof 先决条件 为了获得更好的编码体验,您应该在 IDE 中安装 TypeScript,例如VSCode。它将为您提供许多基本功能&#xff…

什么是SASE

当前,各大企业正改变其向内外部员工、合作伙伴和客户交付业务和提供生产力服务的模式。世界各地的企业纷纷采用新技术,例如云、软件即服务(SaaS)、随处办公(WFA)解决方案、物联网(IoT&#xff0…

FaaS介绍

FaaS介绍 云计算技术的核心是服务化,服务化就需要提供闭环和灵活的服务。而云计算也在持续发展中,从最初的基础设施服务化(IaaS),平台服务化(PaaS),软件服务化(SaaS)&…

SSAS介绍

文章提纲 商业智能(BI, Business Intelligence)基本概念 SSAS(SQL Server Analysis Services)相关工具(开发、管理和客户端) 总结 一、商业智能(BI, Business Intelli…

简单的留言板,导航页面和公司介绍html5页面源码。

一个简单的留言板源代码 使用 PHP 和 MySQL 数据库来存储和检索留言信息&#xff1a; index.php: html复制代码 <!DOCTYPE html> <html> <head> <title>留言板</title> <style type"text/css"> form { margin: 10px; padding: …

MarkDown初级语法一文精通,兼容MarkText

MarkDown初级语法 1.标题2.断句与断行3.水平尺4.字体样式加粗斜体删除线 5.链接自动链接内联链接链接标题 6.图片7.块引用8.列表无序有序 9.待办10.表格11.代码内联代码围栏代码块 12.键盘键13.表情符号 1.标题 标题按照级别是从h1到h6构建的&#xff0c;数字角标越小&#xf…

MES入门.浅谈ISA-88

通过前面章节我们知道了&#xff0c;S88是标准的名称&#xff0c;其中S就是Standard。而SP88是写这个标准的委员会&#xff0c;这个委员会成立的目的就是为了解决制造企业成长中的四个基本问题&#xff1a; 没有可用于批次控制的通用模型&#xff1b;最终用户很难与他人沟通批…