ASEMBLER MCS-51 Podstawowe informacje



Podobne dokumenty
petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Mikrokontroler ATmega32. Język symboliczny

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Systemy liczenia. 333= 3*100+3*10+3*1

Wykład 4. Środowisko programistyczne

Dariusz Kozak ZESTAW URUCHOMIENIOWY MIKROKOMPUTERÓW JEDNOUKŁADOWYCH MCS-51 ZUX51. Asembler ASMX51 INSTRUKCJA OBSŁUGI

Logiczny model komputera i działanie procesora. Część 1.

Struktura systemu mikroprocesorowego Z80 z interfejsem monitora graficznego.

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

1 Podstawy c++ w pigułce.

SYSTEM PRZERWA Ń MCS 51

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Kodowanie informacji. Przygotował: Ryszard Kijanka

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

Wydział Mechaniczny. Instrukcja do zajęć laboratoryjnych

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Techniki multimedialne

Podstawy Informatyki Języki programowania

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Ćwiczenie 8 Kolory i znaki specjalne

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Podstawy programowania skrót z wykładów:

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Stan wysoki (H) i stan niski (L)

Wstęp do programowania. Wykład 1

Pracownia Komputerowa wyk ad VII

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

Struktura programu w asemblerze mikrokontrolera 8051

Język programowania: Lista instrukcji (IL Instruction List)

Programowanie w języku Python. Grażyna Koba

Tranzystor JFET i MOSFET zas. działania

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

1 Podstawy c++ w pigułce.

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

1. Operacje logiczne A B A OR B

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Powtórka algorytmów. Wprowadzenie do języka Java.

Lista rozkazów mikrokontrolera 8051

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Mikrokontrolery w mechatronice. Wstępne uwagi

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Elementy składoweµc - przypomnienie

Programowanie Niskopoziomowe

Struktura pliku wejściowego ipko biznes przelewy zagraniczne (MT103 / CSV)

Spis treści OPIS PLIKU W FORMACIE CSV Z DANYMI PPE LUB EP 1

Języki programowania zasady ich tworzenia

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Zmienne, stałe i operatory

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Struktura i działanie jednostki centralnej

Architektury Komputerów - Laboratorium Informatyka III rok studia dzienne

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Komunikacja człowiek-komputer

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Technika mikroprocesorowa. Języki programowania mikrokontrolerów

Podstawy Informatyki Języki programowania c.d.

Kodowanie informacji. Kody liczbowe

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

imei Instytut Metrologii, Elektroniki i Informatyki

1. Dyrektywy asemblerowe

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

Arytmetyka liczb binarnych

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Laboratorium 10: Maszyna stanów

Podstawy programowania w BASCOM BASIC AVR

Metody numeryczne Laboratorium 2

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

Instrukcja warunkowa i złoŝona.

Techniki mikroprocesorowe i systemy wbudowane

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Formaty obrazów rastrowych biblioteki PBM

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Arytmetyka komputera

Mikroprocesor Operacje wejścia / wyjścia

DSM-51 v2 Dydaktyczny System Mikroprocesorowy. DSM51ASS (Asembler 8051) wersja 1.01

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Powtórka algorytmów. Wprowadzenie do języka Java.

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Transkrypt:

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. 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 jednostką przyjętą jest bajt będący grupą ośmiu bitów. Bajt moŝe przyjąć 2 8 = 256 stanów, w zakresie od 0 do 255. Mikroprocesory cyfrowymi, scalonymi układami programowalnymi. W toku pracy wykonują kolejne rozkazy programu umieszczone w pamięci programu. Rozkazy zapisywane 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. Operacja: A := Rn, prześlij do akumulatora zawartość rejestru Rn, gdzie n oznacza numer rejestru w zakresie 0 7. Liczba bajtów: 1 D7 D0 Kod rozkazu 1 1 1 0 1 n n n Przykład wykonania rozkazu: przed: A = xx Rn = 55h 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

Operacja: A := data, załaduj do akumulator stałą data Liczba bajtów: 2 D7 D0 Kod rozkazu 1 1 1 0 0 1 0 0 bajt 1 data bajt 2 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 Są opracowano języki opisu rozkazów mikroprocesora dość 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. to najczęściej kilkuliterowe symbole rozkazów, w oczywisty sposób przedstawiające działanie poszczególnych rozkazów symbole pochodzą z języka angielskiego. Rozkazy z listy mikrokontrolera rodziny MCS 51 Mnemonik Rozwinięcie Czynność MOV move prześlij JMP jump skocz INC increment zwiększ o 1 DEC decrement zmniejsz o 1 RL rotate left obróć o jeden bit w lewo DJNZ decrement register and jump if not zero zmniejsz zawartość rejestru i skocz jeśli jest róŝny od zera 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łą. 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 Operand (operandy) spacja MOV A, R2 lub mov a, r2 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ą kolejność operandów. Pierwszy operand wskazuje na obiekt docelowy (ang. destination) 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 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ę będącą rozkazów lub 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ę bądź w opcjach programu 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 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

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ą 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 prawidłowe i następnymi w tej linii znaki końca linii, asembler moŝe przyporządkować będą 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łę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 zakończona znakiem dwukropka bezpośrednio po ostatnim jej znaku. Etykieta musi zaczynać się literą, moŝe dowolną kombinację zawierać liter, cyfr, znaku? i znaku podkreślenia _. Długość etykiety moŝe być dowolna (ograniczona długością będą linii) ale tylko pierwsze 31 znaków jest waŝne. Pozostałe znaki ignorowane, mogą być choć 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 PETLA: DEC R1 ; zmniejsz R1 MOV A,R1 ; prześlij zawartość R1 do akumulatora JNZ PETLA ; skocz jeśli R1 jest > 0 Stosowanie znaków tabulacji jako separatorów pól znacznie poprawiło czytelność tekstu programu. Wyraźnie widoczne kolumny etykiet, rozkazów, operandów i komentarzy. 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 w tzw. dyrektywach. Dyrektywy umieszczane 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: ją Typ stałej Cyfry Przyrostek Przykład binarna 0,1 B 01101110B 110B dziesiętna 0 9 D lub brak 29D 255 szesnastkowa 4CH 0 - F H (heksadecymalna) 0E7H znakowa znaki pisarskie - A UWAGA!!! W zapisie heksadecymalnym jeśli najstarsza cyfra znacząca liczby jest większa od 9 to naleŝy 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 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 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 CZAS SET 200 ; przyjmij dla stałej 200 nazwę CZAS 8

- LOW operator wydzielania młodszego bajtu z liczby 16-bitowej. MOV TL0,#LOW 0C412H ; wpisz do rejestru TL0 bajt ; o wartości 12H - HIGH operator wydzielania starszego bajtu z liczby 16-bitowej. - 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 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: MOV TH0,#HIGH 0C412H ; wpisz do rejestru TH0 bajt ; o wartości 0C4H DB arg1 [, arg2 [, arg3...]] 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 ; wpisz do pamięci programu kod ASCII litery A DB DB A, B, C ; wpisz do pamięci programu 4 kolejne kody liter Automatyka ; wpisz do pamięci programu kody ASCII liter słowa ; Automatyka 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...]] 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 - LED BIT P2.0 ; nadaj bitowi 0 portu P2 nazwę LED TXD BIT P3.0 ; nadaj bitowi 1 portu P3 nazwę TXD 10