Zrozumiec Assembler3

Zrozumiec Assembler3



82 Zrozumieć Asembler

3.3 Kompilatory i asemblery

o

Zajmijmy się teraz wyjaśnieniem, czym są kompilatory oraz asemblery. Oba należą do kategorii programów zwanych translatorami.

Translator jest programem przekształcającym tekst źródłowy programu zapisany w postaci zrozumiałej dla człowieka na program zapisany postaci kodu binarnego. Ten plik binarny może od razu być plikiem programu, który mikroprocesor będzie w stanie wykonać, może być też jednym z setek typów plików binarnych, jak np. fontem czy spakowanym plikiem danych.

Translatory programów są grupą translatorów, które tłumaczą tekst źródłowy programu zapisanego przez programistę w danym języku programowania na binarne odpowiedniki kodu źródłowego. Powstałe tą drogą pliki binarne nazywamy plikami łub kodami obiektowymi (ang. object codę fil es).

Kompilator jest translatorem tłumaczącym, który przyjmuje plik kodu źródłowego napisanego w języku wyższego poziomu, takim jak C czy Pascal, i na tej podstawie tworzy plik obiektowy.

Asembler jest specjalnym rodzajem kompilatora. Asembler jest specjalnie przeznaczony do tłumaczenia tego, co my nazywamy pro-gamem w języku Asemblera na kod obiektowy. Podobnie jak kompilator Pascala czy C, Asembler asembluje (tłumaczy, kompiluje) tekst źródłowy na kod obiektowy. Sama czynność tłumaczenia jest podobna w obu przypadkach. Istotna różnica powstaje w sposobie tworzenia programu: w przypadku Asemblera mamy pełną kontrolę nad kodem obiektowym.

3.3.1 Język Asemblera

Niektórzy ludzie definiują język Asemblera jako język, w którym z jednegc^wiersza tekstu źródłowego (zapisanego przez programistę) tworzy się jedną instrukcję maszynową. Dosłownie to nie jest prawda, gdyż niektóre wiersze zapisane przez programistę w kodzie źródłowym są poleceniami dla programu asemblera i nie powodują utworzenia żadnej instrukcji maszynowej.

Moja definicja Asemblera jest następująca:

Język Asemblera jest językiem, który umożliwia sprawowanie całkowitej kontroli nad każdą poszczególną instrukcją maszynową, wytworzoną przez program translatora.

Pascal czy C umożliwiają programowi translatora podejmowanie wielu niewidocznych decyzji dotyczących sposobu przetłumaczenia określonej instrukcji zapisanej przez programistę na instrukcje maszynowe. Przyjrzyj się temu na przykładzie prostej instrukcji zapisanej w Pascalu, przypisującej wartość 42 do zmiennej liczbowej o nazwie I:

I : = 42 ;

Kompilator Pascala przetłumaczy ten wiersz na serię czterech czy pięciu instrukcji maszynowych, które utworzą wartość 42 i zapamię-tają ją w pamięci pod adresem zakodowanym jako nazwa I. Normalnie programista nie ma pojęcia, jakie to są te cztery czy pięć instrukcji i nie ma również żadnej możliwości ich zmiany, nawet jeśli by znał inny zestaw instrukcji wykonujących tę samą pracę szybciej. Kompilator Pascala wykorzystuje instrukcje maszynowe według własnego wyboru.

Asembler natomiast dla każdego wiersza tekstu źródłowego programu generuje jedną instrukcję języka maszynowego (kodu maszynowego). W tekście źródłowym znajdują się również wiersze nic dotyczące bezpośrednio działania CPU. Natomiast każda instrukcja języka maszynowego w docelowym kodzie obiektowym (i programie) powstaje w wyniku bezpośredniego przetłumaczenia tylko jednego wiersza z kodu źródłowego.

Każda z instrukcji maszynowych ma odpowiedni mnemonik, czyli literowy zapis ułatwiający zapamiętanie efektów^ jej wykonania. Mnemoniki zostały utworzone w celu ułatwienia pracy programisty. Na przykład mnemonikiem dla instrukcji maszynowej 9CH, która poleca zachować rejestr znaczników na stosie, jest wyraz PUSHF, znacznie łatwiejszy do zapamiętania niż liczba 9CH.

Fragment programu w Asemblerze wyglądać może następująco:

M0V AH,12H ;12H - usługa sterowania silnikiem M0V AL/03H ;03H - odczyt aktualną szybkości X0R BH,BH ;zerowanieBH

INT 71H ;wywotanie przerwania obstugi silnika


Wyszukiwarka

Podobne podstrony:
Zrozumiec Assembler6 Zrozumieć Asembler Przyjrzyj się jeszcze raz dwójkowemu odpowiednikowi 218: 11
Jakub Cisło Teoria gier 28 czerwca 20133 Dwa stosy Zajmijmy się teraz na chwilę podstawową wers
461 § 1. Przedstawienie analityczne krzywych i powierzchni Zajmijmy się teraz krzywymi w przestrzeni
76123 ullman242 (2) 8. ZORIENTOWANE OBIEKTOWO JŁ-ZYKI ZAPYTAŃ Zajmijmy się teraz klauzulą SELECT. Dl
ullman242 (2) 8. ZORIENTOWANE OBIEKTOWO JŁ-ZYKI ZAPYTAŃ Zajmijmy się teraz klauzulą SELECT. Dla każd
P4140136 Zajmijmy się teraz konkretnymi czynnościami. Naświetloną gumę zanurzamy w kuwecie pełnej zi
Zrozumiec Assembler0 Zrozumieć Asembler Jeff Duntemann
Zrozumiec Assembler1 Zrozumieć AsemblerJeff DUNTEMANN Copyright © 1993 by John Wileyand Sons Ali ri
Zrozumiec Assembler9 Zrozumieć AsemblerJeff DUNTEMANN Copyright © 1993 by John Wiley and Sons Ali r
Zrozumiec Assembler3 2 Zrozumieć Asembler0.1 Wszystko można zaplanować Szybko! Obudzić dzieci, już
Zrozumiec Assembler4 4 Zrozumieć Asembler Wskaźnik podaje jej jedną z dwóch informacji: 1) jest dos
Zrozumiec Assembler5 6 Zrozumieć Asembler my automatycznie, nie zdając sobie zupełnie sprawy, że o
Zrozumiec Assembler6 8 Zrozumieć Asembler dają do jakichś czarnych dziur, którymi zwykle są: szybki

więcej podobnych podstron