Tryby adresowania
Transkrypt
Tryby adresowania
Mikrokontroler ATmega32 Tryby adresowania Rejestry funkcyjne 1 Tryby adresowania Rozró nia si dwa główne tryby: adresowanie bezpo rednie i po rednie (je li jeden z argumentów jest stał , ma miejsce tak e adresowanie natychmiastowe) Przestrzenie adresowe pami ci programu i danych s rozdzielone W przestrzeni pami ci danych s umieszczone rejestry robocze i funkcyjne (I/O) 2 Tryby adresowania - przestrzenie adresowe Z punktu widzenia instrukcji transferu danych w architekturze AVR mo na rozró ni trzy przestrzenie adresowe: Przestrze pami ci programu (spm, lpm) Przestrze pami ci danych (ld, st,…) Przestrze wej cia-wyj cia (in, out) 3 Tryby adresowania - adresowanie pami ci danych Adresowanie bezpo rednie Adres argumentu jest umieszczony bezpo rednio w kodzie instrukcji – jest warto ci stał Wykorzystuj to instrukcje transferu danych: lds – odczyt danej z pami ci sts – zapis danej do pami ci Przykład: lds R0,0x006A ;ładuj rejestr R0 zawarto ci ;komórki pami ci SRAM o adr. 0x006A 4 Tryby adresowania - adresowanie pami ci danych Adresowanie po rednie Adres argumentu jest znajduje si w jednym z trzech 16-bitowych rejestrów indeksowych X, Y lub Z Wykorzystuj to instrukcje transferu danych: ld – odczyt danej z pami ci st – zapis danej do pami ci Przed u yciem tego trybu adresowania adres musi by zapisany do odpowiedniego ejestru indeksowego (pary rejestrów roboczych) Ten tryb adresowania wspiera u ycie wska ników w j zykach wysokiego poziomu 5 Tryby adresowania - adresowanie pami ci danych Adresowanie po rednie Przykład: ldi XH, 0 ldi XL, 0x6A ld R0, X st X, R1 ;ładuj MSB adresu do rej. X ;ładuj LSB adresu do rej. X ;ładuj rejestr R0 zawarto ci ;komórki pami ci SRAM o adr. ;Zapisanym w X ;zapisz rejestr R1 w komórc pami ci ;o tym samym adresie 6 Tryby adresowania - adresowanie pami ci danych Adresowanie po rednie z postinkrementacj Polega na zwi kszeniu o jeden warto ci zapisanej w jednym z trzech rejestrów indeksowych X, Y lub Z po wykonaniu instrukcji transferu danych W asemblerze jest reprezentowane znakiem „+” po nazwie rejestru indeksowego Przyspiesza kopiowanie bloków pami ci Przykład: ld R2, Y+ ;ładuj rejestr R2 zawarto ci komórki pami ci ;wskazywanej przez Y i przesu wska nik 7 ;o jeden Tryby adresowania - adresowanie pami ci danych Adresowanie po rednie z predekrementacj Polega na zmniejszeniu o jeden warto ci zapisanej w jednym z trzech rejestrów indeksowych X, Y lub Z przed wykonaniem instrukcji transferu danych W asemblerze jest reprezentowane znakiem „-” przed nazw rejestru indeksowego Przyspiesza kopiowanie bloków pami ci Przykład: ld R0, -Z ; przesu wska nik Z o -1 i ładuj rejestr R0 ; zawarto ci komórki pami ci wskazywanej ; przez Z 8 Tryby adresowania - adresowanie pami ci danych Adresowanie po rednie z przemieszczeniem Adres jest wyznaczany przez dodanie do zawarto ci rejestru indeksowego Y lub Z stałej z zakresu 0…63, zawarto samego rejestru nie ulega zmianie Wykorzystuj to instrukcje transferu danych: ldd – odczyt danej z pami ci std – zapis danej do pami ci Adres zapisany w rejestrze indeksowym jest traktowany jako adres bazowy, np. pocz tek tablicy Przykład: std Y+5, R3 ; zapisz zawarto rejestru R3 ; do pi tej komórki pami ci powy ej ; bazy wskazywanej przez rejestr Y 9 Tryby adresowania - adresowanie rejestrów roboczych Adres rejestru wyznacza jego nazwa – odpowiada to adresowaniu implikowanemu w ogólnej klasyfikacji Przykład: clr R0 ;zeruj rejestr R0 W instrukcjach transferu dost p do rejestrów roboczych mo na uzyska tak jak do komórek pami ci (s wmapowane w przestrze pami ci danych) 10 Tryby adresowania - adresowanie przestrzeni I/O Adresowanie rejestrów funkcyjnych urz dze wej cia-wyj cia jest mo liwe na dwa sposoby: - jako adresowanie komórek pami ci (rejestry s wmapowane w przestrze pami ci danych) - przez bezpo rednie adresowanie w przestrzeni wej cia-wyj cia w instrukcjach in i out Drugi sposób adresowania pozwala na szybszy dost p do rejestru Adres rejestru funkcyjnego w przestrzeni pami ci danych jest przesuni ty o 32 pozycje wzgl dem jego adresu I/O, wynika to z mapowania rejestrów roboczych w tym zakresie adresów 11 Tryby adresowania - adresowanie przestrzeni I/O Przykład: in R0, SREG statusu lds R0, SREG+0x20 instrukcji ;ładuj rejestr R0 zawarto ci rej. ;odpowiada poprzedniej 12 Tryby adresowania - adresowanie pami ci programu Adresowanie stałych Jest u ywane do odczytu stałych warto ci np. napisów, z pami ci FLASH oraz przeprogramowywania tej pami ci Wykorzystywany jest tutaj ryb adresowania po redniego (opcjonalnie z postinkrementacj ) z u yciem rejestru Z Jest stosowane w instrukcjach: lpm – odczyt z pami ci programu spm – zapis do pami ci programu (element procesu programowania pami ci) Podczas odczytu pami programu jest adresowana bajtowo – adres stałej otrzymuje si przez pomno enie adresu komórki pami ci przez 2 i ew. dodanie 1 13 Tryby adresowania - adresowanie pami ci programu Adresowanie stałych Przykład: ldi ZH, high(Stala*2+1) ;ładuj MSB wska nika ;adresem stałej ldi ZL, low(Stala*2) ;ładuj LSB wska nika ;adresem stałej lpm R0, Z ;ładuj rejestr R0 stał z pami ci ;programu Stala: .dw 0x12AB ;deklaracja stałej 14 Tryby adresowania - adresowanie pami ci programu Adresowanie skoków Dost pne s trzy tryby adresowania podczas skoków i wywoła podprogramów: 1. bezpo redni 2. po redni 3. wzgl dny 15 Tryby adresowania - adresowanie pami ci programu Adresowanie bezpo rednie skoków i wywoła Adres docelowy jest podawany jako stała 16-bitowa w kodzie instrukcji jmp lub call Przykłady: jmp etykieta1 ;wykonaj skok do miejsca ;oznaczonego etykiet call pierwiastek ;wywołaj procedur pierwiastek Ten tryb adresowania pozwala na wykonanie skoku w obszarze 64kB pami ci programu 16 Tryby adresowania - adresowanie pami ci programu Adresowanie po rednie skoków i wywoła Adres docelowy znajduje si w rejestrze indeksowym Z. Tryb jest wykorzystywany w instrukcjach ijmp oraz icall Przykłady: ldi ZH, high(Potega) ;załaduj MSB adresu procedury ldi ZL, low(Potega) ;załaduj LSB adresu procedury icall ;wywołaj procedur Ten tryb adresowania pozwala na tworzenie wska ników do funkcji i procedur w j zykach wysokiego poziomu 17 Tryby adresowania - adresowanie pami ci programu Adresowanie wzgl dne skoków i wywoła Adres docelowy jest wyznaczany przez dodanie stałej z zakresu -2048…2047 do aktualnej warto ci licznika programu w kodzie instrukcji rjmp lub rcall Przykłady: pierwiastek: ;pocz tek procedury … rcall pierwiastek ;wywołaj procedur pierwiastek Ograniczenie zakresu skoku do 2k słów powoduje, e nie zawsze mo na u y tego trybu adresowania 18 Podstawowe rejestry funkcyjne Rejestr statusu SREG •Stan bitów tego rejestru jest wynikiem ostatniej operacji wykonywanej przez ALU •Warto ci poszczególnych bitów s warunkami wykonania skoków warunkowych •Wywołanie poprogramu i przyj cie przerwania nie zapisuje na stosie tego rejestru (programista musi to wykona samodzielnie w procedurze) 19 Podstawowe rejestry funkcyjne Rejestr statusu SREG - nazwy bitów: 20 Podstawowe rejestry funkcyjne Znaczenie poszczególnych bitów rejestru SREG: Bit 7 – I: globalne zezwolenie na przerwania Bit 6 – T: podr czna pami w operacjach na bitach Bit 5 – H: przeniesienie połówkowe Bit 4 – S: bit znaku Bit 3 – V: znacznik przekroczenia zakresu liczb U2 Bit 2 – N: znacznik warto ci ujemnej w kodzie U2 Bit 1 – Z: znacznik warto ci równej 0 Bit 0 – C: znacznik przekroczenia zakresu liczb NBC 21 Podstawowe rejestry funkcyjne Wska nik stosu – SPH:SPL Jest stosowany do adresowania pami ci w obszarze stosu Jest wykorzystywany podczas: - odkładania danych na stos za pomoc instrukcji push i zdejmowania danych ze stosu za pomoc instrukcji pop - podczas wywoływania i powrotów z procedur Odkładanie danych lub wywołanie programu powoduje dekrementacj wska nika stosu (stos ro nie w dół) 22