MASM — Вікіпедія

MASM
Типасемблер
РозробникMicrosoft
Стабільний випуск10.0.30319.1 (12 квітня 2010)
Операційна системаWindows і MS DOS
ЛіцензіяMicrosoft EULA
Вебсайтmasm32.com

Microsoft Macro Assembler (MASM) — асемблер для архітектури x86 під операційну систему Microsoft Windows, що використовує синтаксис Intel. Поточна версія MASM існує у двох різновидах: для 16- і 32-бітного коду і для 64-бітного (ML64).

До версії 6.12 був окремим продуктом Microsoft. Зараз він включений до складу різних компіляторів і середовищ розробки компанії.

Історія

[ред. | ред. код]

Перші версії MASM з'явилися у 1981 році. До версії 5.0 MASM був доступний тільки для операційних систем MS DOS. Версії 5.1 і 6.0 розроблялися крім MS DOS також і для OS/2.

Версія 6.0, яка була випущена у 1992 році була першою версією, що включала підтримку програмування на більш високому рівні і більш C-подібний синтаксис. В кінці цього року з'явилася версія 6.1A, в якій було додано підтримку керуванням пам'яті, що була сумісна з Visual C++. У 1993 році було додано повну підтримку 32-бітного режиму і всього набору інструкцій процесора Pentium. Виконуваний файл MASM у той час постачався як «бі-модальний» DOS-розширений файл (використовуючи TNT DOS extender від Phar Lap).

Версії 6.12-6.14 були реалізовані як патчі до версії 6.11. Вони змінили тип виконуваного файлу MASM у власний формат Windows PE — і, зрештою, 6.11 була останньою версією з можливістю запуску на MS DOS.

Кінець-кінцем 1997 року MASM мав повну підтримку Windows 95 і включав деякі інструкції, специфічні для AMD.

У 1999 році представила набір інструкцій SIMD і MMX, які невдовзі після цього став підтримувати і MASM. З випуском версії 6.15, Microsoft припинила підтримку MASM як окремого продукту і включила його до інструментарію Visual Studio. Підтримки 64-бітного режиму в MASM не було до випуску Visual Studio 2005, де MASM отримав номер версії 8.0. Сьогодні MASM продовжує використовуватися на платформі Win32, попри конкуренцію з такими новими продуктами, як NASM, FASM, TASM, HLASM.

Приклади програм

[ред. | ред. код]

Програма Hello World на MASM32.

    .386     .model flat, stdcall     option casemap :none     include \masm32\include\masm32.inc     include \masm32\include\kernel32.inc     include \masm32\macros\macros.asm     includelib \masm32\lib\masm32.lib     includelib \masm32\lib\kernel32.lib     .code     start:       print "Hello world"       exit     end start 

Приклад тієї ж програми на мові MASM версії 4.0 для процесора Intel 8086.

include io.asm    data segment         x db 'Hello world!', '$'    data ends   stack segment stack         db 128 dup (?)   stack ends    code segment         assume cs: code, ds: data, ss: stack  start: mov ax, data         mov ds, ax         lea dx, x         outstr         finish    code ends         end start 

Приклад тієї ж програми для MS-DOS на мові MASM версії 6.1 для процесора Intel 8086.

    .model tiny     .code     .startup     mov dx, offset Hello     mov ah, 9     int 21h     .exit     Hello db 'Hello world!$'     end 

Програми сторонніх розробників, що підтримують MASM

[ред. | ред. код]

Інтегровані середовища розробки

[ред. | ред. код]

Налагоджувачі

[ред. | ред. код]

Дизасемблери

[ред. | ред. код]
  • IDAPro

Примітки

[ред. | ред. код]
  1. Архівована копія. Архів оригіналу за 18 серпня 2009. Процитовано 26 жовтня 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання) [Архівовано 2009-08-18 у Wayback Machine.]
  2. Архівована копія. Архів оригіналу за 4 березня 2009. Процитовано 26 жовтня 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  3. Архівована копія. Архів оригіналу за 1 листопада 2011. Процитовано 26 жовтня 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  4. Архівована копія. Архів оригіналу за 28 жовтня 2011. Процитовано 26 жовтня 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)