**Асэмблер** (ад англ. assembler — зборшчык) — гэта праграма, якая перакладае тэкст на мове асэмблера ў машынны код, зразумелы кампутару.

Асэмблеры, як і іншыя мовы праграмавання, могуць быць спецыфічныя для канкрэтнай архітэктуры, аперацыйнай сістэмы і варыянту сінтаксісу. Гэта злучана з тым, што асэмблеры працуюць з машыннымі інструкцыямі, якія залежаць ад пэўнага працэсара.

Асэмблеры таксама могуць быць мультыплатформеннымі ці ўніверсальнымі, гэта значыць працаваць на розных платформах і аперацыйных сістэмах. Акрамя таго, існуюць крос-асэмблеры, якія могуць збіраць машынны код і выкананыя модулі для архітэктур, выдатных ад архітэктуры і/ці аперацыйнай сістэмы, у якой працуе сам асэмблер. Напрыклад, крос-асэмблер можа трансляваць праграму для мікракантролера для асэмблераў, якія працуюць на кампутары.

Многія сучасныя асэмблеры з’яўляюцца макрапрацэсарамі, заснаванымі на мове асэмблера. Яны называюцца макроасемблер, таму што дазваляюць праграмісту запісваць паўтараюцца фрагменты кода ў выглядзе кароткіх імёнаў. Апроч макрасаў, асэмблеры пры трансляцыі выконваюць і іншыя дырэктывы, набор якіх залежыць не ад апаратнай платформы, на якую транслюецца праграма, а ад самага выкарыстоўванага транслятара.

Асэмбляванне можа быць прамежкавым этапам падчас стварэнняў выкананага файла. Кампілятары моў высокага ўзроўню часта генеруюць прамежкавы код на мове асэмблера, які затым апрацоўваецца асэмблерам. Асэмбляванне можа таксама выкарыстоўвацца для стварэння аб’ектных модуляў, якія змяшчаюць машынны код і дадзеныя праграмы. Аб’ектныя модулі могуць затым аб’ядноўвацца ў выкананы файл з дапамогай лінкера.

Асэмбляванне, у адрозненне ад кампіляцыі праграм на мовах высокага ўзроўню, з’яўляецца больш адназначным і зварачальным працэсам. Гэта звязана з тым, што ў мове асэмблера кожнай мнемоніку адпавядае адна машынная інструкцыя, у той час як у мовах высокага ўзроўню кожны выраз можа ператварацца ў вялікую колькасць розных інструкцый. Зваротны працэс асэмблявання называецца дызасэмбляваннем.

Архітэктура x86
---------------

### Асэмблеры для DOS

Для аперацыйнай сістэмы DOS было распрацавана некалькі папулярных асэмблераў, у тым ліку Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) і Watcom Assembler (WASM). Таксама быў папулярны просты асэмблер A86

### Windows

Для стварэньня праграм для Windows быў распрацаваны неафіцыйны пакет TASM 5+, створаны чалавекам з нікам neonovd’. Апошняя афіцыйная версія TASM, якая падтрымлівае інструкцыі MMX, — 5.3, у цяперашні час уваходзіць у склад Turbo C++ Explorer. Распрацоўка праграмы спынена. Апошняе абнаўленне кампілятара адбылося дзякуючы неафіцыйнаму асяроддзю распрацоўкі TASM Visual. Серада спрашчае працу з кампілятарам.

Microsoft падтрымлівае свой асэмблер MASM. Апошнія версіі ўключаны ў наборы DDK. Аднак распрацоўка версіі MASM для DOS спынена. Акрамя таго, Стывен Хатчэсан стварыў пакет MASM32 для праграмавання на MASM.

### GNU і Linux

Асэмблер GAS, які ўваходзіць у пакет binutils аперацыйнай сістэмы GNU, выкарыстоўвае AT&T-сінтаксіс, у адрозненне ад большасці іншых папулярных асэмблераў, якія выкарыстоўваюць Intel-сінтаксіс. Падтрымка Intel-сінтаксісу была дададзеная ў GAS у версіі 2.10.

### Пераносныя асэмблеры

Існуе адчынены праект асэмблера NASM (Netwide Assembler), версіі якога даступныя пад розныя аперацыйныя сістэмы. Гэты асэмблер дазваляе атрымліваць аб’ектныя файлы для гэтых сістэм.

Yasm — гэта цалкам перапісаны асэмблер NASM пад ліцэнзіяй BSD.

Flat Assembler (FASM) — гэта малады асэмблер пад мадыфікаванай BSD-ліцэнзіяй, якая забараняе пераліцэнзаванне. Ён даступны для розных аперацыйных сістэм, у тым ліку KolibriOS, Linux, DOS і Windows. FASM выкарыстоўвае Intel-сінтаксіс і падтрымлівае інструкцыі x86-64.

Архітэктуры RISC
----------------

### MCS-51

Архітэктура MCS-51 (Intel 8051) з’яўляецца класічнай для мікракантролераў. Для яе ёсць крос-асэмблер ASM51, выпушчаны карпарацыяй MetaLink.

Акрамя таго, многія кампаніі-распрацоўшчыкі праграмнага забеспячэння, такія як IAR і Keil, прапануюць свае ўласныя асэмблеры. У некаторых выпадках гэтыя асэмблеры аказваюцца больш эфектыўнымі дзякуючы зручнаму набору дырэктыў і наяўнасці асяроддзя распрацоўкі, якая ўключае ў сябе прафесійны асэмблер, мова праграмавання C, адладчык і менеджэр праектаў.

### AVR

У цяперашні час Atmel прапануе 4 кампілятара для AVR: AVRStudio 3, AVRStudio 4, AVRStudio 5 і AVRStudio 6, AVRStudio 7.

Праект AVR-GCC (ён жа WinAVR) уключае ў сябе кампілятар avr-as, які з’яўляецца партаваным пад AVR асэмблерам GNU as з GCC.

Avra — гэта вольны мінімалістычны кампілятар для AVR..

Платныя кампілятары для AVR: IAR (EWAVR), CodeVisionAVR, Imagecraft. Яны падтрымліваюць мовы асэмблера і C, а IAR таксама падтрымлівае C++.

Кампілятар BASCOM, які пераводзіць мову BASIC у машынны код для AVR, таксама з’яўляецца платным.

### ARM

Для працэсараў ARM існуе мноства кампілятараў, якія могуць быць прадстаўлены вытворцам працэсара ці распрацоўшчыкам IDE. Афіцыйным кампілятарам ARM з’яўляецца ARM Compiler 6, які ўваходзіць у IDE DS-5 Development Studio і падтрымлівае кампіляцыю праграм на мовах Сі і C++.
Кампілятары ад пастаўшчыкоў ARM працэсараў і распрацоўшчыкаў ARM toolchain:

| Пастаўшчык IDE | Кампілятар | Падтрымоўваныя мовы | Умовы выкарыстання |
| --- | --- | --- | --- |
| Keil mVision | MDK-ARM Архівавана 21 кастрычніка 2020. | Сі/C++/Assembler | Shareware (не больш за 32kb) |
| IAR Embedded Workbench Архівавана 4 сакавіка 2021. | IAR Compiller | Сі/C++/Assembler | Commercial |
| CoIDE | GCC compiler. | Сі/C++/Assembler. | Free/Commercial |
| True Studio | Precompiled GCC compiler. | Сі/C++/Assembler | Free/Commercial |

### PIC

Кампанія Microchip Technology выпускае асяроддзе распрацоўкі MPLAB для стварэння, рэдагаванні і адладкі праграм для мікракантролераў сямейства PIC. Серада ўключае ў сябе транслятары з мовы асэмблер MPASM і ASM30. Сучасныя версіі асяроддзя «MPLAB X IDE» мультиплатформенные і працуюць пад рознымі аперацыйнымі сістэмамі. Серада распаўсюджваецца бясплатна.

### AVR32

### MSP430

### PowerPC

Асэмблер для PowerPC уваходзіць у склад праграмнага пакета The PowerPC Software Development Toolset ад IBM.

### MIPS

Архітэктура віртуальнай машыны асэмблера
----------------------------------------

### Асэмблер fasmg (Архітэктура CALM-інструкцый)

Fasmmg — гэта спадчыннік асэмблера fasm, але не прывязаны ні да якой архітэктуры працэсара. Ён выкарыстоўвае парадыгму фармавання выходных файлаў любых фарматаў і з машынным кодам пад любыя архітэктуры працэсараў пасродкам макрасаў. Акрамя макрасаў, у fasmg прысутнічаюць CALM-інструкцыі — уласныя інструкцыі віртуальнай машыны асэмблера, эквівалентныя макрасам, якія пераўтворацца транслятарам у байт-код. У камплекце маюцца наборы CALM-інструкцый для эмуляцыі падтрымкі інструкцый архітэктур x86, x64, 8052, AVR. Распрацоўнік можа апісаць наборы CALM-інструкцый для падтрымкі любой іншай архітэктуры ці выходных фарматаў файлаў. Ёсць варыяцыі транслятара для Mac OS, Linux і Windows.

Гл. таксама
-----------

* Мова асэмблера

Крыніцы
-------

1. ↑  Праект Sourceforge на сайце SourceForge.net