LABORATORIUM ASEMBLER MCS-51 Podstawowe informacje

Transkrypt

LABORATORIUM ASEMBLER MCS-51 Podstawowe informacje
Zachodniopomorski
Uniwersytet
Technologiczny
WYDZIAŁ ELEKTRYCZNY
Zakład Cybernetyki i Elektroniki
LABORATORIUM
TECHNIKA MIKROPROCESOROWA
ASEMBLER MCS-51
Podstawowe informacje
Opracował:
mgr in . Andrzej Biedka
Ŝ
W technice cyfrowej stosowana jest logika dwuwarto ciowa – system binarny. Oznacza to
wyst powanie dwóch stanów logicznych 0 i 1, czasem definiowanych jako LOW i HIGH. Takie
stany logiczne mog by reprezentowane przykładowo przez napi cie elektryczne.
ś
ę
ą
ć
ę
Przykład:
rodzina układów cyfrowych TTL – w wersji standardowej (zasilanej napi ciem +5V)
definiuje nast puj ce poziomy logiczne:
ę
ę
ą
-
LOW – napi cie w zakresie 0 – 0,8V
-
HIGH – napi cie w zakresie 2,4V – 5,0V ( ci lej 2,4V – Vcc, napi cia
zasilania)
ę
ę
ś
ś
ę
Pojedynczemu sygnałowi elektrycznemu mo emy przypisa dwa stany logiczne: PRAWDA
i FAŁSZ, przy czym spraw umown jest okre lenie czy PRAWDA ma by reprezentowana
przez LOW czy przez HIGH. Jest to jednocze nie najmniejsza jednostka informacji nazwana
bitem. Dla przedstawienia informacji bardziej zło onej (przykładowo cyfry systemu
dziesi tnego, litery alfabetu) u ywa si zespołów, grup bitów. Najpowszechniej przyj t
jednostk jest bajt b d cy grup o miu bitów. Bajt mo e przyj 28 = 256 stanów, w zakresie od
0 do 255.
Ŝ
ć
ą
ą
ś
ć
ś
Ŝ
Ŝ
ę
ę
ę
ą
Ŝ
ą
ę
ą
ą
ś
ą
ć
Mikroprocesory s cyfrowymi, scalonymi układami programowalnymi. W toku pracy wykonuj
kolejne rozkazy programu umieszczone w pami ci programu. Rozkazy zapisywane s w postaci
słów o ilo ci bitów zale nej od konkretnego typu mikroprocesora czy mikrokontrolera. W ród
mikrokontrolerów najliczniejsz grup stanowi mikrokontrolery 8-bitowe.
ą
ą
ę
ą
Ŝ
ś
ś
ą
ę
ą
Rozkazy mikrokontrolera mog by zawarte w jednym lub w kilku bajtach. Zale ne jest to od
rodzaju rozkazu oraz ewentualnej obecno ci argumentów w danym rozkazie, np. stałej, adresu.
Ŝ
ą
ć
ś
Przykład:
Operacja:
A := Rn, prze lij do akumulatora zawarto
rejestru w zakresie 0 – 7.
ś
ś
ć
rejestru Rn, gdzie n oznacza numer
Liczba bajtów: 1
D7
Kod rozkazu
1
D0
1
1
0
Przykład wykonania rozkazu:
przed:
A = xx
Rn = 55h
1
n
n
n
po:
A = 55h
Rn = 55h
W rozkazie 5 starszych bitów okre la czynno (przesłanie zawarto ci rejestru Rn do
akumulatora) natomiast 3 młodsze bity okre laj numer rejestru.
ś
ś
ś
ć
ś
ą
2
Przykład:
Operacja:
A := data, załaduj do akumulator stał data
ą
Liczba bajtów: 2
D7
D0
1
Kod rozkazu
1
1
0
0
1
0
0
bajt 1
bajt 2
data
Przykład wykonania rozkazu:
przed:
A = xx
po:
A = data
Pierwszy bajt rozkazu okre la czynno (przesłanie nast pnego bajtu zapisanego w pami ci
programu do rejestru akumulatora), drugi bajt zawiera dana stał .
ś
ś
ć
ę
ę
Ŝ
ą
ą
Jak wspomniano wy ej program pracy mikroprocesora składa si z ci gu rozkazów, czasem o
długo ciach bardzo du ych. Pisanie programu w kodzie binarnym (maszynowym) jest
czynno ci bardzo uci liw , czasochłonn i podatn na bł dy. W celu uproszczenia procesu
tworzenia oprogramowania opracowano j zyki opisu rozkazów mikroprocesora bardziej
przyjazne człowiekowi, łatwiejsze w zrozumieniu. Pierwszym takim j zykiem był asembler.
Ŝ
ę
ą
Ŝ
ś
Ŝ
ś
ą
ą
ą
ą
ą
ę
ę
ę
ASEMBLER okre la dwa poj cia:
ś
ę
1. j zyk zapisu rozkazów danego mikroprocesora lub mikrokontrolera (ka dy
mikroprocesor ma swój własny asembler)
Ŝ
ę
2. program komputerowy słu cy do tłumaczenia tekstu programu napisanego w
j zyku asemblera na kod maszynowy (zrozumiały dla mikroprocesora)
Ŝ
ą
ę
Asembler jako j zyk.
ę
Lista rozkazów ka dego mikroprocesora przedstawiona jest w postaci tzw. kodów
mnemonicznych rozkazów. S to najcz ciej kilkuliterowe symbole rozkazów, w do oczywisty
sposób przedstawiaj ce działanie poszczególnych rozkazów – symbole pochodz z j zyka
angielskiego.
Ŝ
ą
ę
ś
ś
ć
ą
ą
ę
Przykład:
Rozkazy z listy mikrokontrolera rodziny MCS 51
Mnemonik
MOV
JMP
INC
DEC
RL
DJNZ
Rozwini cie
Czynno
move
prze lij
jump
skocz
increment
zwi ksz o 1
decrement
zmniejsz o 1
rotate left
obró o jeden bit w lewo
decrement register zmniejsz zawarto rejestru i skocz je li jest
and jump if not zero ró ny od zera
ę
ś
ć
ś
ę
ć
ś
Ŝ
3
ć
ś
Poniewa rozkazy dotycz konkretnych obiektów (rejestry, komórki pami ci, adresy) to
informacje o tych obiektach, nazywane operandami lub argumentami, musz by umieszczone w
rozkazie. Zatem ka dy rozkaz b dzie zbudowany według nast puj cej zasady:
Ŝ
ą
ę
ą
ć
Ŝ
ę
ę
ą
Pole rozkazu
separator
Pole operandu(ów)
Mnemonik rozkazu
tabulator lub
spacja
Operand (operandy)
Przykład:
MOV
A, R2
mov
a, r2
lub
Rozkazy oraz operandy mog by pisane małymi lub du ymi literami. Jako separatora lepiej jest
stosowa znak tabulacji, ze wzgl du na lepsz czytelno tekstu programu. Operandy je li jest
ich wi cej ni jeden nale y oddziela znakiem przecinka. Istniej rozkazy, które nie wymagaj
operandu, np.: NOP (ang. no operation – nic nie rób)
Ŝ
ą
ć
ć
ę
Ŝ
ą
ś
ć
ś
Ŝ
ę
ć
ą
ą
W asemblerach procesorów firmy Intel dla rozkazów przesła przyj to „odwrotn ”
operandów. Pierwszy operand wskazuje na obiekt docelowy (ang. destination)
kolejno
natomiast drugi operand wskazuje obiekt ródłowy (ang. source). W podanym wy ej przykładzie
rozkaz brzmi:
przenie ( ci lej: kopiuj) zawarto rejestru R2 do rejestru akumulatora.
ń
ś
ę
ą
ć
Ŝ
ź
ś
ś
ś
ś
ć
Podane zasady s niezb dne dla przygotowania tekstu ródłowego (w pliku tekstowym!)
danego programu do automatycznego tłumaczenia na kod maszynowy, przy pomocy
komputerowych programów tłumacz cych czyli asemblerów.
ą
ź
ę
ą
Asembler jako program tłumacz cy.
ą
Do przetłumaczenia kodu ródłowego napisanego przez programist na kod maszynowy,
wykonywany przez mikroprocesor słu programy nazwane asemblerami. Ze wzgl du na
unikalno listy rozkazów ka dego typu procesora (cho wyst puj ró ne typy mikroprocesorów
maj ce identyczn list rozkazów lub b d c podzbiorem listy rozkazów innego typu) nale y
zawsze stosowa wła ciwy asembler. Niektóre asemblery mog obsługiwa wiele typów
mikroprocesorów, a wyboru typu dokonuje si w opcjach programu b d okre la si go w
tek cie pliku ródłowego. Naturalnie tekst ródłowy programu musi by tworzony według
pewnych zasad, tak by program asemblera mógł go prawidłowo interpretowa .
ź
ę
Ŝ
ą
ę
Ŝ
ś
Ŝ
ć
ć
ę
ą
Ŝ
ą
ą
ć
ę
ę
ą
ą
ś
ą
ć
ę
ź
ś
ź
ą
ź
ś
ę
ć
ć
Ogólna zasada pracy programu asemblera:
Asembler analizuje tekst ródłowy linia po linii. Linia tekstu zako czona jest znakami CR (ang.
carriage return – powrót karetki) i LF (ang. line feed – wysuw linii, nowa linia). Znaki te s
wpisywane do tekstu po naci ni ciu klawisza ENTER. Program dopuszcza linie puste, czyli
posiadaj ce tylko znaki CR,LF. Jedna pełna linia wprowadzana jest do bufora pami ci programu
asemblera. Nast pnie program zaczyna analiz ci gów znaków zaczynaj c od pierwszego znaku
ró nego od spacji lub tabulacji.
ź
ń
ą
ś
ę
ą
ę
ę
ę
ą
Ŝ
4
ą
Przykład:
Linia tekstu programu ródłowego:
ź
MOV A, R2
- tekst widoczny
→| MOV→| A, R2 ↵
- znaki w linii
znak
tekst
znak
tekst
znak
znak
tabulacji
MOV
tabulacji
A, R2
CR
LF
- znaki w linii
W podanym przykładzie pierwszym ci giem znaków jest ci g MOV. Asembler porównuje ten
ci g z własn list rozkazów danego mikroprocesora. Poniewa ci g MOV wyst puje na li cie i
oznacza instrukcj wymagaj c dwóch operandów program analizuje dalsz cz
linii szukaj c
ci gu znaków okre laj cych operandy. Nast pny ci g znaków A, R2 zostaje równie porównany
z wewn trzn list mo liwych operandów. Poniewa operandy s prawidłowe i nast pnymi w tej
linii s znaki ko ca linii, asembler mo e przyporz dkowa danej linii kod maszynowy
zidentyfikowanego rozkazu korzystaj c ze swojej tablicy kodów. Program pobiera zawarto
nast pnej linii powtarzaj c powy sze czynno ci. Je li w danej linii zostaje wykryty bł d
(np.: literowy zamiast MOV b dzie MOW, lub b d bł dne operandy) asembler zasygnalizuje
ten fakt w raporcie ko cowym i oczywi cie nie wygeneruje kodu wynikowego danego
programu.
Je li tekst ródłowy programu jest poprawny pod wzgl dem formalnym asembler wygeneruje
kod wynikowy (maszynowy) i umie ci go w pliku o rozszerzeniu *.hex. Plik ten jest plikiem
ładowanym do programu zajmuj cego si zaprogramowaniem pami ci mikrokontrolera. W
laboratorium u ywany jest w tym celu program ISP PROG.
ą
ą
Ŝ
ą
ą
ą
ą
ę
ą
ę
ą
ą
ę
ś
ś
ć
ą
Ŝ
ą
ś
ą
ę
ą
Ŝ
ę
ą
Ŝ
ą
ą
ę
Ŝ
ń
ą
ą
ć
ą
ś
ć
Ŝ
ę
ą
ś
ś
ę
ę
ń
ą
ę
ś
ź
ś
ą
ę
ś
ą
ę
ę
Ŝ
Przedstawiony sposób pracy jest uproszczony, cho oddaj cy zasad pracy. Asembler w
odró nieniu od kompilatora słu cego do programowania w j zykach wysokiego poziomu
dokonuje tylko bezpo redniego tłumaczenia tekstu programu napisanego w j zyku asemblera na
kod maszynowy mikroprocesora. Ka dej instrukcji tekstu ródłowego odpowiada jeden rozkaz w
kodzie maszynowym, przy czym mo e to by jeden, dwa lub trzy bajty.
ć
Ŝ
ą
ę
Ŝ
ę
ą
ś
ę
Ŝ
ź
Ŝ
ć
Informacje zamieszczone poni ej odnosz si zasadniczo do asemblera b d cego cz ci
rodowiska IDE (ang. Integrated Devlelopment Enviroment – zintegrowane rodowisko
programistyczne) stosowanego w laboratorium Techniki Mikroprocesorowej czyli
M-IDE Studio for MCS-51. Nale y zaznaczy , e obsługa tego asemblera jest zbli ona do
obsługi wielu innych asemblerów.
Szczegółowa dokumentacja asemblera dost pna jest w menu Help – Asem-51 Manual
rodowiska M-IDE Studio.
Ŝ
ą
ś
ę
ę
ę
ś
Ŝ
Ŝ
ć
ę
ś
ą
5
Ŝ
ś
ą
Elementy linii tekstu ródłowego:
ź
Linia tekstu ródłowego mo e zawiera maksimum 255 znaków w nast puj cych elementach
(polach):
Ŝ
ź
ć
ę
ą
[etykieta:] [rozkaz [operandy] ] [;komentarz]
Ka dy z elementów jest opcjonalny, czyli nie zawsze wyst puje. Elementy mog by pisane
małymi lub du ymi literami – zapis jest równowa ny.
Ŝ
ę
Ŝ
-
ą
ć
Ŝ
etykieta – ci g znaków pozwalaj cy na okre lenie poło enia w kodzie ródłowym,
czyli inaczej mówi c okre la jej bie cy adres. Etykieta musi zaczyna si
od pocz tku linii, musi by zako czona znakiem dwukropka bezpo rednio
po ostatnim jej znaku. Etykieta musi zaczyna si liter , mo e zawiera
dowoln kombinacj liter, cyfr, znaku ‘?’ i znaku podkre lenia ‘_’.
Długo etykiety mo e by dowolna (ograniczona długo ci linii) ale tylko
pierwsze 31 znaków jest wa ne. Pozostałe znaki b d ignorowane, cho
mog by pomocne dla czytelno ci tekstu programu. W praktyce stosuje
si nazwy etykiet znacznie krótsze ni 31 znaków. Dla dobrej czytelno ci
linia programu z etykiet nie powinna zawiera innych elementów.
Ŝ
ą
ą
ź
ś
Ŝ
ą
ś
ą
ą
ć
ń
ć
ę
ś
Ŝ
ć
ą
ę
ą
ć
ę
ś
Ŝ
ś
ć
ć
ś
ą
Ŝ
ę
ą
ć
ą
ć
ś
Ŝ
ę
ś
ą
ć
-
rozkaz – mnemonik rozkazu. Powinien by poprzedzony znakiem tabulacji – czyni to
program bardziej czytelnym.
-
operand – informacja o obiektach, których dotyczy rozkaz. Je li rozkaz wymaga
wi cej ni jednego operandu nale y je oddziela przecinkiem
i ewentualnie spacj . Podobnie jak rozkaz powinien by poprzedzony
znakiem tabulacji – czyni to program bardziej czytelnym.
ć
ś
Ŝ
Ŝ
ę
ć
ą
-
ć
komentarz – musi zaczyna si od znaku rednika. Stosowany jest do opisu działania
poszczególnych rozkazów, grup rozkazów, fragmentów programu. Mo e
by umieszczony w dowolnym miejscu linii, równie od pocz tku linii.
Obowi zuje do ko ca linii, tzn. je li w programie konieczny jest dłu szy
komentarz ka da linia musi zaczyna si od znaku rednika.
ć
ę
ś
Ŝ
Ŝ
ć
ą
Ŝ
ń
ą
ś
Ŝ
ć
ę
ś
Przykłady tekstów programu:
Zapis nieprawidłowy:
MOV R1,#100 ; załaduj liczb 100 do R1
PETLA: DEC R1 ; zmniejsz R1
MOV A,R1 ; prze lij zawarto R1 do akumulatora
JNZ PETLA ; skocz je li R1 jest > 0
ę
ś
ś
ć
ś
Wskutek nieprzestrzegania reguł budowy linii programu tekst jest trudno czytelny, chocia
program asemblera przetłumaczy go prawidłowo.
Ŝ
6
Zapis prawidłowy:
MOV
R1,#100
; załaduj liczb 100 do R1
DEC
MOV
JNZ
R1
A,R1
PETLA
; zmniejsz R1
; prze lij zawarto R1 do akumulatora
; skocz je li R1 jest > 0
ę
PETLA:
ś
ś
ć
ś
Stosowanie znaków tabulacji jako separatorów pól znacznie poprawiło czytelno
programu. Wyra nie widoczne s kolumny etykiet, rozkazów, operandów i komentarzy.
ś
ź
tekstu
ć
ą
Polecenia dla asemblera – dyrektywy asemblera:
Oprócz wła ciwego tekstu programu, który ma by przetłumaczony na kod maszynowy w kodzie
ródłowym musz znale
si dodatkowe informacje umo liwiaj ce asemblerowi proces
tłumaczenia. Informacje te umieszczane s w tzw. dyrektywach. Dyrektywy umieszczane s w
osobnych liniach, od pocz tku linii lub lepiej po znaku tabulacji. Oczywi cie mo na w takiej
linii zawrze komentarz, cho nie jest to stosowane ze wzgl du na zdefiniowan funkcj ka dej
dyrektywy.
ś
ź
ć
ą
ź
ć
ę
Ŝ
ą
ą
ą
ą
ć
ś
ć
ę
Ŝ
ą
ę
Ŝ
Stałe – sposoby zapisu:
Asembler akceptuje stałe numeryczne zapisywane w ró nych systemach liczbowych. Sposoby
zapisu przedstawia poni sza tabela:
Ŝ
Ŝ
Typ stałej
Cyfry
Przyrostek
Przykład
binarna
0,1
B
01101110B
110B
dziesi tna
ę
0–9
D lub brak
29D
255
szesnastkowa
(heksadecymalna)
znakowa
0-F
H
znaki pisarskie
-
4CH
0E7H
‘A’
UWAGA!!! W zapisie heksadecymalnym je li najstarsza cyfra znacz ca liczby jest wi ksza od 9
to nale y j poprzedzi zerem.
ś
Ŝ
ą
ą
ć
7
ę
Podstawowe dyrektywy:
-
END – dyrektywa oznaczaj ca koniec tekstu do tłumaczenia. Konieczno
jej
stosowania wynika z zasady pracy asemblera – cykliczne pobieranie
nowych linii do analizy. Nale y zwraca uwag by ci g znaków END nie
wyst pował w tek cie programu, bo zostanie on potraktowany jako
dyrektywa ko ca tekstu.
ą
ś
Ŝ
ę
ć
ę
ć
ą
ś
ń
-
ORG – dyrektywa definiuj ca zawarto licznika rozkazów w danym miejscu kodu
maszynowego. Na pocz tku programu zawsze musi by umieszczona ta
dyrektywa z przypisanym adresem 0, bo taka jest zawarto licznika
rozkazów przy starcie mikroprocesora – po sygnale RESET.
Składnia dyrektywy:
ą
ś
ć
ą
ć
ś
ć
ORG adres
Przykład:
ORG
-
0
EQU – dyrektywa definiuj ca symbol dla stałej lub nazw dla rejestru. Wskazane jest
u ywanie w operandach symbolicznych nazw stałych zamiast ich
bezpo rednich warto ci, zarówno ze wzgl du na czytelno programu jak i
łatwo
dokonywania ewentualnych poprawek.
W nazwach
symbolicznych nie mo na u ywa polskich znaków diakrytycznych. Raz
nadana nazwa symboliczna nie mo e by przedefiniowana.
Składnia dyrektywy:
ą
ę
Ŝ
ś
ś
ś
ę
ś
ć
ć
Ŝ
Ŝ
ć
Ŝ
ć
NazwaSymboliczna EQU Stała
Przykład:
-
MNOZNIK
EQU 200
; przyjmij dla stałej 200 nazw MNOZNIK
LICZNIK
EQU R7
; nazwij rejestr R7
ę
SET – dyrektywa działaj ca podobnie jak EQU, ale nazwa nadana dyrektyw SET jest
mo liwa do przedefiniowania w tek cie programu. Nazwy nadane
dyrektywami EQU i SET nie mog by wzajemnie przedefiniowane.
Składnia dyrektywy:
ą
ą
Ŝ
ś
ą
NazwaSymboliczna SET
ć
Stała
Przykład:
CZAS
SET
200
; przyjmij dla stałej 200 nazw CZAS
ę
8
- LOW – operator wydzielania młodszego bajtu z liczby 16-bitowej.
Przykład:
MOV TL0,#LOW
0C412H
; wpisz do rejestru TL0 bajt
; o warto ci 12H
ś
- HIGH – operator wydzielania starszego bajtu z liczby 16-bitowej.
Przykład:
MOV TH0,#HIGH 0C412H
; wpisz do rejestru TH0 bajt
; o warto ci 0C4H
ś
- DB – dyrektywa rezerwuj ca i nadaj ca warto bajtom w pami ci programu – ROM.
W linii mo e by zdefiniowany jeden lub wiele bajtów (ograniczeniem jest
linii tekstu równa 255 znaków). Je li wyst puje wiele
maksymalna długo
argumentów nale y je oddziela przecinkiem. Znaki nawiasów [] wskazuj tylko
opcjonalno argumentów! Nie wpisuje si ich w tej dyrektywie.
Składnia dyrektywy:
ą
Ŝ
ś
ś
ę
ś
ę
ć
ą
ć
DB
ć
ć
Ŝ
ś
ą
ć
ę
arg1 [, arg2 [, arg3 . . .]]
Przykład:
DB
12
; wpisz do pami ci programu bajt o warto ci 12
DB
01100011B
; wpisz do pami ci programu bajt zdefiniowany
ę
ś
ę
;binarnie
DB
12, 13, 14, 15 ; wpisz do pami ci programu 4 kolejne bajty
DB
‘A’
DB
‘A’, ‘B’, ‘C’ ; wpisz do pami ci programu 4 kolejne kody liter
DB
‘Automatyka’ ; wpisz do pami ci programu kody ASCII liter słowa
; Automatyka
ę
; wpisz do pami ci programu kod ASCII litery A
ę
ę
ę
9
- DW arg1 [, arg2 [, arg3 . . .]] – dyrektywa rezerwuj ca i nadaj ca warto
dwubajtowym słowom w pami ci programu – ROM. W linii mo e by zdefiniowane
jedno lub wiele słów (ograniczeniem jest maksymalna długo linii tekstu równa 255
znaków). Je li wyst puje wiele argumentów nale y je oddziela przecinkiem. Znaki
nawiasów [] wskazuj tylko opcjonalno argumentów! Nie wpisuje si ich w tej
dyrektywie.
Składnia dyrektywy:
ą
ą
ę
Ŝ
ś
ś
ę
DW
ś
ć
ć
ć
Ŝ
ą
ś
ć
ć
ę
arg1 [, arg2 [, arg3 . . .]]
Przykład:
DW
2008
; wpisz do pami ci programu słowo o warto ci 2008
DW
1200, 0FF00H, 1314, 0 ; wpisz do pami ci programu 8 bajtów
ę
ś
ę
;podanych jako słowa
-
BIT – definiuj bit, nadaj bitowi nazw symboliczn . Składania dyrektywy:
ę
NazwaSymboliczna BIT
ą
NazwaBitu
Przykład:
LED
BIT
P2.0
; nadaj bitowi 0 portu P2 nazw LED
TXD BIT
P3.0
; nadaj bitowi 1 portu P3 nazw TXD
ę
ę
-
10

Podobne dokumenty