130 likes | 252 Views
Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: < pole etykiety > < pole mnemonika > < pole argumentów > < pole komentarza > na przykład: tuskocz: add a,r0 ;dodanie do akumulatora liczby z R0 mov r6,a ;odeslanie sumy do R6. gdzie:
E N D
Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: <pole etykiety> <pole mnemonika> <pole argumentów><pole komentarza> na przykład: tuskocz: add a,r0;dodanie do akumulatora liczby z R0 mov r6,a;odeslanie sumy do R6
gdzie: <pole etykiety> - obszar o szerokości min. 1 znaku, przeznaczony na wpisywanie identyfikatorów tzw. etykiet po etykiecie musi występować dwukropek i spacja (': '), oddzielają on wtedy etykietę od pozostałej zawartości linii i zwiększają czytelność programu; <pole mnemonika> - obszar przeznaczony na wpisanie symbolicznej nazwy rozkazu; w polu tym wpisuje się także tzw. dyrektywy asemblera (patrz dalej);
gdzie-c.d.: <pole argumentów> - obszar, którego wypełnienie jest opcjonalne - zależne od wymagań wpisanego w <polu mnemonika> rozkazu, pole to jest przeznaczone na listę argumentów rozkazu; <pole komentarza> - opcjonalny obszar, którego początek jest identyfikowany przez znak średnika (‘;’), jest on przeznaczony do wpisywania dowolnego tekstu objaśniającego działania realizowane przy pomocy użytych rozkazów mikroprocesora; w szczególnym przypadku komentarz może zaczynać w dowolnym miejscu linii programu, także od pierwszej kolumny (z pominięciem pozostałych pól).
Przeznaczenie etykiet: 1. Identyfikatory adresów w przestrzeni adresowej procesora - wskazują: adresy skoków, np:tutaj: add A,P0 adresy początkowe wywoływanych procedur, np: acall dod3B ;dodaj liczby 3-bajtowe adresy początkowe struktur danych, np:tablica1: db 12,234,0,11 ;tablica liczb 1-bajtowych
Przeznaczenie etykiet: • 2. Identyfikatory stałych programowych, - ułatwia to ich użycie w tekście programie - zwiększenie czytelności programu, np: • CR EQU 13 ;definicja znaku ASCII • 3. Identyfikowanie zmiennych programowych, poprzez przypisanie im np. dyrektywą EQU adresu początkowego, np: • data EQU 70h ;zmienna przechowujaca dzien mies. • .... • mov r1,#data ;R1<-adres zmiennej ‘data’
Stałe: są to wartości liczbowe lub znakowe zdefiniowane na etapie asemblacji programu lub pobierane z innych programów w procesie łączenia (linkowania). Przykłady: stała znaczenie reprezentacja binarna ‘A’ pojedynczy znak ASCII 41h ‘tekst’ ciąg znaków ASCII 74h,65h,6Bh,73h,74h 787, 787D liczba dziesiętna 0313h 10011B liczba binarna 13h 2AFh liczba szesnastkowa 02AFh 2A0H liczba szesnastkowa 02A0h 0F00h liczba szesnastkowa 0F00h 0x2AF, $2AF liczba szesnastkowa 02AFh 0457 liczba ósemkowa 012Fh 457Q, 457q liczba ósemkowa 012Fh 457O, 457o liczba ósemkowa 012Fh identyfikator o przypisanej wartości zgodna z wartością
Wykorzystanie wyrażeń Przykładowo, zamiast sekwencji deklaracji: zmienna1 equ 4500h zmienna2 equ 4502h zmienna3 equ 4504h zmienna4 equ 4508h możemy zapisać: zmienna1 equ 4500h zmienna2 equ zmienna1+2 zmienna3 equ zmienna2+2 zmienna4 equ zmienna3+4 Wynik asemblacji - taki sam, ale przy drugim zapisie łatwiejsze poprawki
Dostępne funkcje wyrażeń: • Następstwo operatorów: • nawiasy( ); • NOT, HIGH, LOW; • + , - (jednoargumentowe do określenia znaku argumentu); • * , / , MOD; • + , - (dwuargumentowe); • SHR , SHL; • AND , OR , XOR; • < , <= , = , <> , >= , > , LT , LTE , EQ , NE , GTE , GT.