Asembler (z ang. assembler) – termin informatyczny związany z programowaniem oraz 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 także 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 dopuszcza to z jednej strony na wykonywanie oprogramowania, z drugiej strony bezpośrednia odpowiedniość mnemoników oraz kodu maszynowego dopuszcza zachowanie wysokiego stopnia kontroli programisty nad działaniem procesora. Składnia języka asemblera zależy od architektury procesora, ale oraz 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 oraz pojawianiem się kolejnych języków interpretowanych oraz kompilowanych języki asemblerów straciły na znaczeniu. Z tego powodu współcześnie nie wykorzystuje się z nich do pisania całych programów na komputery osobiste. Jednak są 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 albo także niewielkich fragmentów systemów operacyjnych.
Ekstrakod
W pewnych językach asemblera są mnemoniki, tzw. ekstrakody[1], którym nie odpowiadają instrukcje procesora, lecz są realizowane programowo, zwykle przez funkcje systemu operacyjnego albo 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ę wielokrotnie 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ć da się Asembler x86. Do najpopularniejszych asemblerów zalicza się NASM, TASM oraz MASM, jak także FASM oraz GASM.
Kod
Przykładowe polecenia (mnemoniki) w języku Asembler x86:
mov ax, 0D625h
mov es, ax ; wprowadź do rejestru segmentowego ES wartość z AX wynoszącą D625 szesnastkowo (54821 dziesiętnie)
mov al, 24
mov ah, 0 ; załaduj do rejestru AX wartość 24 (wyzeruj AH – starszą połówkę rejestru AX oraz zapisz wartość 24 w młodszej AL)
int 21h ; wywołaj przerwanie nr 33 (21 szesnastkowo)
Przetwarzanie asemblerowego programu źródłowego na wykonywalny plik w postaci .com czy .exe :
TITLE EXECUTING. ASM
EXECUTING PARTED
ASSUME CS:EXECUTING
ORG 100h
START: MOV AH, 9
MOV AL, 40h
MOV AH, 10d
MOV CX, 11D
INT 10h
MOV AH, 4ch
INT 21h
EXECUTING ENDS
END START ; / PLIK OTRZYMAŁ NAZWĘ EXECUTING.ASM /
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 oraz adresów w sposób zrozumiały dla człowiekapotrzebne źródło.
Pierwszym polskim asemblerem był SAS komputera XYZ z ok. 1958 r.potrzebne źródło Do pierwszych szerzej znanych w Polsce asemblerów trzeba 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 oraz Energią Polskiej Akademii Nauk, 2006. ISBN 83-89174-39-1.
- 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 oraz Informatyka, Politechnika Łódzka. Katedra Mikroelektroniki oraz Technik Informatycznych. Wyd. 2 popr. Łódź: Politechnika Łódzka. Katedra Mikroelektroniki oraz Technik Informatycznych, 2005. ISBN 83-919289-8-5.
- Eugeniusz Wróbel: Programowanie w języku asemblera MASM. Gliwice: Wydawnictwo Politechniki Śląskiej, 2006. ISBN 83-7335-313-5.
Sprawdź też
Przypisy
Linki zewnętrzne