200 likes | 338 Views
Programowanie w asemblerze. Budowa programu w asemblerze. Stałe programowe. Wyrażenia w asemblerze. Dyrektywy asemblera. Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę:. < pole etykiety >. < pole mnemonika >. < pole argumentów >.
E N D
Budowa programu w asemblerze Stałe programowe Wyrażenia w asemblerze Dyrektywy asemblera
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: ld a,(licznik) ;pobranie do A wartosci licznika tuskocz: add a,b;dodanie do akumulatora liczby z rej.B ld c,a;odeslanie sumy do rej.C albo: ld a,(licznik);pobranie do A wartosci licznika tuskocz: add a,b;dodanie do akumulatora liczby z rej.B ld c,a;odeslanie sumy do rej.C
gdzie: <pole etykiety> - obszar o szerokości min. 1 znaku, przeznaczony na wpisywanie po etykiecie musi występować dwukropek i spacja (': '), oddzielają one wtedy etykietę od pozostałej zawartości linii i zwiększają czytelność programu; identyfikatorów - tzw. etykiet;
gdzie: <pole mnemonika> - obszar przeznaczony na wpisanie symbolicznej nazwy rozkazu; w polu tym wpisuje się także tzw. dyrektywy asemblera (patrz dalej);
gdzie: <pole argumentów> - obszar, którego wypełnienie jest opcjonalne - zależne od wymagań wpisanego w rozkazu, pole to jest przeznaczone na listę argumentów rozkazu; <polu mnemonika>
gdzie-c.d.: <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ć się 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,B adresy początkowe wywoływanych procedur, np: call dod3B ;dodaj liczby 3-bajtowe . . . dod3b: ld a,(hl) . . . ret adresy początkowe struktur danych, np: org 2400h tablica1: dfb 12,234,0,11 ;tablica liczb 1-bajtowych ;zaczynajaca sie od 2400h
Przeznaczenie etykiet: 2. Identyfikatory stałych programowych - reprezentują wartości znane już na etapie pisania programu - ułatwia to ich użycie w tekście programie - zwiększenie czytelności programu, np: CR: EQU 13 ;definicja znaku carriage return LF: EQU 10 ;definicja znaku line feed ... ld (hl),CR ;zakonczenie linii tekstu inc hl ;standardowa kombinacja ld (hl),LF ;znakow sterujacych CR,LF
Przeznaczenie etykiet: • 3. Identyfikowanie zmiennych programowych, poprzez przypisanie im adresu początkowego tych zmiennych, np: • data: EQU 700h ;zmienna przechowujaca dzien mies. • mies: EQU 701h ;zmienna przechowujaca miesiac • .... • ld hl,data ;HL:=adres zmiennej ‘data’ • albo: • ORG 700h • data: dfs 1 ;zmienna przechowujaca dzien mies. • mies: dfs 1 ;zmienna przechowujaca miesiac
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