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

Podobne dokumenty