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