Laboratorium Techniki Mikroprocesorowej 2 - EZ1C600 034
1. Wprowadzenie
Do podstawowych języków programowania mikroprocesorów zalicza się języki symboliczne, zwane także językami asemblerowymi lub potocznie asemblerami. Języki te w swej składni odwołują się do elementarnych zasobów wewnętrznych mikroprocesora (rejestrów roboczych, pomocniczych, sterujących, flag, itd.). Obiekty te są w językach symbolicznych identyfikowane przez nazwy, charakterystyczne dla danego mikroprocesora. Zwykle są to identyfikatory nadane tym obiektom przez projektanta/producenta danego mikroprocesora. Również instrukcje języków symbolicznych są przetwarzane przez specjalne programy tłumaczące, zwane potocznie asemblerami, na kody binarne rozkazów rozpoznawalnych przez dekoder rozkazów mikroprocesora. Cechą charakterystyczną języków symbolicznych (asemblerowych) jest to, że ich instrukcje są przekładane na kody rozkazów w relacji 1:1, tzn. jednej instrukcji języka symbolicznego odpowiada jeden rozkaz mikroprocesora.
Rozkazy mikroprocesora realizują różne operacje: arytmetyczne, logiczne, zmiany sekwencji przetwarzania rozkazów (skoki i wywołania procedur), kontrolno-sterujące, itd.. Producenci mikroprocesorów zwykli nadawać tym rozkazom nazwy-identyfikatory. Z reguły nazwy te, zwane też mnemonikami rozkazów, są tworzone jako anglojęzyczne skróty opisów działań poszczególnych rozkazów (np.: DJNZ - Decrement & Jump if Not Zero, LD -LoaD, CP - ComPare). To dopasowanie nazewnictwa do realizowanych funkcji znakomicie ułatwia programistom posługiwanie się językami asemblerowymi. Ponieważ rozkazy na ogół odwołują się do wewnętrznych zasobów mikroprocesora lub innych składników systemu mikroprocesorowego, konieczne jest wskazanie tych zasobów w formie tzw. listy argumentów. Lista argumentów rozkazu jest zwykle, następującym po mnemoniku rozkazu, ciągiem identyfikatorów i stałych programowych, oddzielonych od siebie przecinkami (np.: LD A,B; LD HL,123). Tylko niewielki procent rozkazów nie wymaga żadnych argumentów (np. HALT, NOP, El) - ich lista argumentów jest wtedy pusta.
Tekst programu w asemblerze składa się z szeregu linii o ustalonej składni - mówimy o występowaniu tzw. pól - fragmentów w ciągu znaków składających się na jeden wiersz tekstu programu. Długość tych pól (liczona w znakach) nie jest narzucona, ale wynika sama z przyjętego stylu pisania programu, zdefiniowanych mnemoników rozkazów i wymagań programu asemblującego. W ogólnym przypadku linia programu w asemblerze ma następującą budowę:
<pole etykiety> <pole mnemonika><pole argumentów><pole komentarza> gdzie:
<pole etykiety> - obszar o szerokości min. 1 znaku, przeznaczony na wpisywanie identyfikatorów tzw. etykiet (patrz dalej); zalecane jest, aby po etykiecie występował dwukropek (*:’), oddziela on wtedy etykietę od pozostałej zawartości linii i zwiększa czytelność programu; w stosowanym na zajęciach metaasemblerze C32 dwukropek jest opcjonalny, a wymagana jest spacja;
1-2