Asembler (z ang. assembler) – termin
informatyczny
związany z
programowaniem
i tworzeniem
kodu maszynowego
dla
procesorów
. W języku polskim oznacza on
program
tworzący kod maszynowy na podstawie
kodu źródłowego
(tzw. asemblacja) wykonanego w
niskopoziomowym
języku programowania
bazującym na podstawowych operacjach
procesora
zwanym językiem asemblera, popularnie nazywanym również asemblerem. W tym artykule język programowania nazywany będzie językiem asemblera, a program tłumaczący – asemblerem.
Język asemblera
Języki asemblera (zwyczajowo asemblery) to rodzina języków programowania niskiego poziomu, których jedno polecenie odpowiada zasadniczo jednemu
rozkazowi
procesora. Języki te powstały na bazie
języków maszynowych
danego procesora poprzez zastąpienie
kodów operacji
ich
mnemonikami
. Dzięki stosowaniu kilkuliterowych skrótów poleceń zrozumiałych dla człowieka pozwala to z jednej strony na tworzenie
oprogramowania
, z drugiej strony bezpośrednia odpowiedniość mnemoników oraz kodu maszynowego umożliwia zachowanie wysokiego stopnia kontroli programisty nad działaniem procesora. Składnia języka asemblera zależy od
architektury procesora
, ale i używanego asemblera, jednak zwykle autorzy asemblerów dla danego procesora trzymają się oznaczeń danych przez producenta.
Pierwotnie był to podstawowy język programowania procesorów. W wyniku poszukiwania efektywniejszych metod programowania i pojawianiem się kolejnych języków interpretowanych i kompilowanych języki asemblerów straciły na znaczeniu. Z tego powodu współcześnie nie korzysta się z nich do pisania całych programów na komputery osobiste. Jednak istnieją zastosowania, np. w przypadku programowania
mikrokontrolerów
, systemów wbudowanych, sterowników sprzętu, gdzie nadal znajdują one swoje miejsce. Korzysta się z nich także do pisania kluczowych fragmentów kodu wymagających najwyższej wydajności, wyjątkowo małych rozmiarów kodu wynikowego lub również niewielkich fragmentów
systemów operacyjnych
.
Ekstrakod
W niektórych językach asemblera występują mnemoniki, tzw. ekstrakody[1], którym nie odpowiadają instrukcje procesora, lecz są realizowane programowo, zwykle przez funkcje
systemu operacyjnego
lub
biblioteczne
.
Asembler
Asembler (ang. assemble – składać) to program dokonujący tłumaczenia języka asemblera na
język maszynowy
, czyli tzw. asemblacji. Jest to swoisty odpowiednik
kompilacji
dla
języków wyższych poziomów
. Program tworzony w innych językach programowania niż asembler jest zwykle
kompilowany
do języka maszynowego (wyniku pracy asemblera), a następnie zamieniany na kod binarny przez program asemblera.
Powtarzające się często schematy programistyczne oraz wstawiane fragmenty kodu doprowadziły do powstania tzw.
makroasemblerów
, które rozszerzają asemblery o obsługę makr przed właściwą asemblacją, co zbliża je nieco do pierwszych wersji
języka C
.
Przykład
Do najpopularniejszych odmian języka asemblera, ze względu na popularność architektury
Intela
znanej pod nazwą
x86
, zaliczyć można
Asembler x86
. Do najpopularniejszych asemblerów zalicza się
NASM
,
TASM
oraz MASM, jak również
FASM
i GASM.
Kod
Przykładowe polecenia (mnemoniki) w języku Asembler x86:
mov ax, 0D625hmov es, ax ; wprowadź do rejestru segmentowego ES wartość z AX wynoszącą D625 szesnastkowo (54821 dziesiętnie)mov al, 24mov ah, 0 ; załaduj do rejestru AX wartość 24 (wyzeruj AH – starszą połówkę rejestru AX i zapisz wartość 24 w młodszej AL)int 21h ; wywołaj przerwanie nr 33 (21 szesnastkowo)
Historia
Pierwszym asemblerem był skonstruowany przez
Konrada Zuse
w 1945 r. układ elektromechaniczny przygotowania
taśmy perforowanej
z programem dla maszyny
Z4
w postaci modułu Planfertigungsteil, który umożliwiał wprowadzanie oraz odczyt rozkazów i
adresów
w sposób zrozumiały dla człowieka[].
Pierwszym polskim asemblerem był
SAS
komputera
XYZ
z ok. 1958 r.[] Do pierwszych szerzej znanych w Polsce asemblerów należy
PLAN
, wykorzystywany w komputerach
Odra
, oraz
MOTIS
, stosowany w maszynach
Mera 300
.
Bibliografia
- Augustyn Jacek: Asemblery: uC51, ADSP-21065L SHARC; Państwowa Wyższa Szkoła Zawodowa w Tarnowie. Instytut Politechniczny. Kraków: Wydawnictwo Instytutu Gospodarki Surowcami Mineralnymi i Energią Polskiej Akademii Nauk, 2006. .
- Kruk Stanisław: Asembler. Podstawy programowania w Windows, Jędrzejów: EscapeMagazine.pl, 2007. ISBN: 978-83-60320-18-1.
- Marańda Witold, Grzegorz Jabłoński, Mariusz Grecki: Programowanie mikroprocesorów rodziny Motorola 680x0 w języku asemblera: materiały pomocnicze do laboratorium dla kierunków studiów Elektronika i Informatyka, Politechnika Łódzka. Katedra Mikroelektroniki i Technik Informatycznych. Wyd. 2 popr. Łódź: Politechnika Łódzka. Katedra Mikroelektroniki i Technik Informatycznych, 2005. .
-
Eugeniusz Wróbel
: Programowanie w języku asemblera MASM. Gliwice: Wydawnictwo Politechniki Śląskiej, 2006. .
Przypisy
Zobacz też
Linki zewnętrzne