Dyrektywy asemblerowe
|
|
- Dawid Czech
- 7 lat temu
- Przeglądów:
Transkrypt
1 Dyrektywy asemblerowe Asembler A51 ma kilka dyrektyw, które pozwalają na definiowanie symboli, wartości, rezerwację i inicjalizację pamięci oraz sterowanie umiejscowieniem kodu programu. Dyrektywy nie powinny być mylone z instrukcjami. Nie wytwarzają one wykonywalnego kodu i za wyjątkiem dyrektyw DB i DW nie wpływają bezpośrednio na zawartość kodu programu. Poniższa tabela pokazuje ogólny przegląd dyrektyw asemblerowych. Dyrektywa Format Opis Segmenty SEGMENT segment SEGMENT klasa Definicja segmentu relokowalnego RSEG RSEG segment Wybór segmentu relokowalnego CSEG CSEG [AT adres_absolutny] Definicja segmentu absolutnego w przestrzeni pamięci kodu BSEG BSEG [AT adres_absolutny] Definicja segmentu absolutnego w przestrzeni pamięci danych adresowanej bitowo DSEG DSEG [AT adres_absolutny] Definicja segmentu absolutnego w przestrzeni wewnętrznej pamięci danych adresowanej bezpośrednio ISEG ISEG [AT adres_absolutny] Definicja segmentu absolutnego w przestrzeni wewnętrznej pamięci danych adresowanej pośrednio XSEG XSEG [AT adres_absolutny] Definicja segmentu absolutnego w zewnętrznej przestrzeni pamięci danych Definicje symboli EQU symbol EQU wyrażenie Trwałe przypisanie wartości symbolowi SET symbol SET wyrażenie Czasowe przypisanie wartości symbolowi BIT symbol BIT adres_bitu Definicja adresu bitu w bitowej przestrzeni danych CODE symbol CODE adres_kodu Przypisanie symbolowi określonego adresu w przestrzeni pamięci kodu DATA symbol DATA adres_danej Przypisanie symbolowi określonego adresu z wewnętrznej przestrzeni danych adresowanej bezpośrednio IDATA symbol IDATA adres_danej Przypisanie symbolowi określonego adresu z wewnętrznej przestrzeni danych adresowanej pośrednio XDATA symbol XDATA adres_danej Przypisanie symbolowi określonego adresu z zewnętrznej przestrzeni danych Inicjalizacja pamięci kodu DB [etykieta:] DB wyrażenie [,wyrażenie,] Tworzy listę wartości, każda o rozmiarze bajta DW [etykieta:] DW wyrażenie [,wyrażenie,] Tworzy listę wartości, każda o rozmiarze słowa Rezerwacja pamięci danych DBIT [etykieta:] DBIT wyrażenie Rezerwuje w pamięci określoną wyrażeniem liczbę bitów DS [etykieta:] DS wyrażenie Rezerwuje w pamięci określoną wyrażeniem liczbę bajtów Łączenie programów PUBLIC PUBLIC symbol [, symbol] Określa symbole, które mogą być użyte poza bieżącym modułem EXTRN EXTRN klasa [:typ] (symbol [, ]) Definiuje odwołania do symboli w bieżącym module, które zostały zdefiniowane w innym module NAME NAME nazwa_modułu Określa nazwę bieżącego modułu Przełączanie adresów ORG ORG wyrażenie Określa umiejscowienie bieżącego segmentu USING USING wyrażenie Określa predefiniowany adres rejestru symbolicznego i rezerwuje przestrzeń dla określonego banku rejestrów Inne END END Wskazuje koniec programu 1
2 Dyrektywy związane z segmentami Segment jest blokiem pamięci kodu lub danych, który tworzy asembler z kodu lub danych znajdujących się w pliku źródłowym. Użycie segmentów w module źródłowym jest zależne od złożoności aplikacji. Małe aplikacje wymagają mniejszej pamięci i są zwykle mniej złożone niż duże, wielomodułowe aplikacje. Mikrokontroler MCS-51 ma kilka różnych, specyficznych dla siebie, przestrzeni pamięci. Segmenty są więc używane do umiejscowienia kodu programu, stałych i zmiennych w tych przestrzeniach. Licznik położenia Podczas swojej pracy asembler A51 stosuje dla każdego segmentu tzw. licznik położenia, który jest wskaźnikiem adresu w przestrzeni aktywnego segmentu. Adres ten jest adresem względnym dla segmentu relokowalnego lub adresem bezwzględnym (rzeczywistym) dla segmentu absolutnego. Kiedy dany segment jest po raz pierwszy aktywowany, licznik położenia jest ustawiany na 0. Wartość jego jest zmieniana po każdej instrukcji o długość tej instrukcji, tj. o ilość bajtów jaką zajmie ta instrukcja w pamięci. Dyrektywy inicjalizacji i rezerwacji pamięci (np. DS, DB lub DBIT) zmieniają wartość licznika położenia po przydzieleniu pamięci przez tą dyrektywę. Dyrektywa ORG ustawia nową wartość dla licznika położenia. Jeśli nastąpi zmiana aktywnego segment na inny, a potem powrót do niego, to licznik położenia przyjmuje taką wartość, jaką miał ostatnio przy korzystaniu z danego segmentu. Zawsze, kiedy asembler napotka etykietę, to przypisuje jej bieżącą wartość licznika położenia i typ bieżącego segmentu dla tej etykiety. Znak dolara ($) sygnalizuje wartość licznika położenia w aktywnym segmencie. Kiedy używa się symbolu $, należy pamiętać, że jego wartość zmienia się z każdą instrukcją, lecz tylko po tym, jak instrukcja ta zostanie całkowicie zanalizowana przez asembler. Jeśli użyje się znaku $ w miejscu operandu instrukcji lub dyrektywy, to reprezentuje on wtedy adres pierwszego bajta tej instrukcji. Segmenty relokowalne Segmenty relokowalne mają swoją nazwę, klasę jak również inne atrybuty. Segmenty relokowalne o tej samej nazwie lecz umieszczone w różnych modułach obiektowych są uważane jako części tego samego segmentu i są nazywane segmentami częściowymi. Są łączone podczas linkowania przez program linkera. Segmenty relokowalne są tworzone przy użyciu dyrektywy SEGMENT, w której trzeba określić nazwę segmentu i jego klasę. Na przykład MOJPROG SEGMENT CODE definiuje segment o nazwie MOJPROG w klasie pamięci CODE. Oznacza to, ze wszystko, co pojawi się w tym segmencie będzie umieszczone w pamięci programu. Po definicji nazwy segmentu relokowalnego należy go wybrać wykorzystując dyrektywę RSEG. Kiedy dyrektywa RSEG zostaje wykorzystana do wybrania segmentu, to staje się on aktywnym segmentem dla asemblera, dopóki nie zostanie wybrany inny segment przez dyrektywę RSEG lub przez dyrektywę określającą segment absolutny. Na przykład RSEG MOJPROG wybiera segment MOJPROG zdefiniowany powyżej. SEGMENT Dyrektywa SEGMENT jest używana do deklaracji segmentów relokowalnych (adres absolutny ustalany jest dopiero na poziomie linkowania). Dyrektywa ta ma następujący format: segment SEGMENT klasa segment jest nazwą symboliczną przypisaną do segmentu. Nazwa ta jest następnie wykorzystywana w dyrektywie RSEG. Nazw symboliczna segmentu może być również wykorzystywana w wyrażeniach do reprezentowania adresu bazowego połączonych segmentów, który zostanie obliczony przez linker. 2
3 klasa jest klasą pamięci, w jakiej ma być ulokowany segment (patrz tabela poniżej). Nazwa każdego segmentu w module musi być unikalna. W procesie linkowania łączone są segmenty tego samego typu. Nazwa segmentu, jeśli jest związana z tą samą klasą segmentu, może powtarzać się w innych modułach łączonych przez linker w jeden wspólny segment. Poniższa tabela przedstawia klasy pamięci. Klasa BIT CODE DATA IDATA XDATA Opis Wewnętrzna pamięć danych adresowana bitowo (20H.. 2FH). Pamięć programu. Wewnętrzna pamięć danych adresowana bezpośrednio (00H.. 7FH i rejestry SFR). Wewnętrzna pamięć danych adresowana pośrednio (00H.. FFH). Zewnętrzna pamięć danych. Przykład: MOJPROG SEGMENT CODE ;definicja segmentu o nazwie MOJPROG ;w pamięci programu DANE SEGMENT XDATA ;definicja segmentu o nazwie DANE ;w zewnętrznej pamięci danych RSEG Dyrektywa RSEG rozpoczyna segment relokowalny, który został wcześniej zadeklarowany przy wykorzystaniu dyrektywy SEGMENT. Dyrektywa RSEG ma następujący format: RSEG segment segment jest nazwą segmentu, która została wcześniej zdefiniowana przy użyciu dyrektywy SEGMENT. Raz rozpoczęty segment pozostaje ważny, dopóki nie zostanie rozpoczęty nowy segment. Przykład: Linker łączy segmenty w takiej kolejności, w jakiej występują polecenia SEGMENT. MOJPROG SEGMENT CODE RSEG MOJPROG MOV A,#0 MOV P0,A Segmenty bezwzględne (absolutne) Segmenty absolutne rezydują w określonym typie pamięci pod stałym adresem ustalanym przez programistę na poziomie pisania kodu programu. Są one tworzone przy użyciu dyrektyw: CSEG, BSEG, DSEG, ISEG i XSEG. Dyrektywy te umożliwiają umieszczanie kodu i danych lub rezerwację przestrzeni pamięci pod określonym adresem. Segmenty absolutne są używane wtedy, gdy istnieje konieczność posiadania dostępu do stałego miejsca w pamięci lub umieszczenia kodu lub stałych pod stałym adresem. Po resecie mikrokontroler rozpoczyna wykonywanie programu od adresu 0. Aby wymusić umieszczenie kodu programu od innego adresu należy wykorzystać segmenty absolutne. Poniższy przykład przedstawia fragment programu, gdzie wymuszono w początkowej fazie jego wykonywania, skok do podprogramu inicjalizującego, który jest umieszczony dalej w przestrzeni kodu. CSEG AT 0 RESET_VECT: LJMP STARTUP 3
4 Kod programu, który został umieszczony od adresu 0000H za pomocą dyrektywy CSEG AT 0 wykonuje operację skoku pod etykietę STARTUP. BSEG, CSEG, DSEG, ISEG, XSEG Dyrektywy BSEG, CSEG, DSEG, ISEG, XSEG określają segmenty absolutne (adres takiego segmentu jest ustalany przez programistę już w chwili pisania programu). Dyrektywy te mają następujący format: BSEG AT adres definiuje bezwzględny adres w segmencie BIT CSEG AT adres definiuje bezwzględny adres w segmencie CODE DSEG AT adres definiuje bezwzględny adres w segmencie DATA ISEG AT adres definiuje bezwzględny adres w segmencie XDATA XSEG AT adres definiuje bezwzględny adres w segmencie IDATA adres jest bezwzględnym adresem bazowym, od którego będzie rozpoczynał się segment. Adres nie może zawierać odniesień w przód i musi być wyrażeniem, które po obliczeniu daje konkretną wartość. BSEG, CSEG, DSEG, ISEG, XSEG określają segmenty absolutne odpowiednio w: przestrzeni danych adresowanych bitowo, przestrzeni kodu, wewnętrznej przestrzeni danych adresowanych bezpośrednio, wewnętrznej przestrzeni danych adresowanych pośrednio, zewnętrznej przestrzeni danych. Użycie tej dyrektywy powoduje, że program asemblujący kończy wcześniejszy segment, jeśli taki był, w danym typie pamięci i tworzy nowy w określonej klasie pamięci, rozpoczynając go od adresu podanego w instrukcji. Jeśli w instrukcji nie zostanie określony adres, to jest kontynuowany ostatni bezwzględny segment danego typu. Jeśli wcześniej nie został określony żaden segment bezwzględny tego typu, a w instrukcji nie określono adresu, to nowy segment jest tworzony od adresu 0. Przykłady: BSEG AT 20h ; absolutny segment bitowy od 20h DEC_FLAGA: DBIT 1 ; bit o adresie absolutnym INC_FLAGA: DBIT 1 CSEG AT 100h ; absolutny segment kodu od 100h PARZ_TAB: DB 00h ; parzystość dla 00h DB 01h ; 01h DB 01h ; 02h DB 00h ; 03h DB 01h ; FEh DB 00h ; FFh DSEG AT 40h ; absolutny segment danych od 40h TMP_A: DS 2 ; słowo danych o adresie absolutnym TMP_B: DS 4 TMP_IA: DS 2 TMP_IB: DS 4 ISEG AT 80h ; absolutny segment danych w pamięci ; adresowanej pośrednio od 80h XSEG AT 1000h ; absolutny segment w zewnętrznej ; pamięci danych od 1000h NAZWA1: DS 25 ; dana w pamięci zewnętrznej o adresie NAZWA2: DS 25 ; absolutnym WERSJA: DS 25 4
5 BSEG ; dalsza część absolutnego NOWA_FLAGA: DBIT 1 ; segmentu bitowego Segment domyślny Domyślnie asembler A51 przyjmuje, że wybrany jest segment kodu i na początku procesu asemblacji modułu źródłowego inicjalizuje licznik położenia wartością 0000H. Umożliwia to tworzenie programu bez określania żadnej dyrektywy dla segmentu relokowalnego, czy też absolutnego. Definicje symboli Dyrektywy definiujące symbole umożliwiają tworzenie symboli, które mogą być używane do reprezentacji rejestrów, liczb i adresów. Symbole definiowane przez te dyrektywy nie mogą być wcześniej zdefiniowane i nie mogą być definiowane ponownie. Wyjątkiem od tych reguł jest dyrektywa SET. EQU, SET Dyrektywy EQU i SET przyporządkowują wartości numeryczne lub symbole rejestrów do wyspecyfikowanych nazw symbolicznych. Symbole zdefiniowane za pomocą dyrektywy EQU nie mogą być wcześniej zdefiniowane, a także nie mogą być później redefiniowane. Dyrektywa SET umożliwia późniejszą redefinicję symbolu. Instrukcje wymagające dyrektyw EQU i SET maja następujący format: symbol EQU wyrażenie symbol EQU rejestr symbol SET wyrażenie symbol SET rejestr symbol wyrażenie nazwa symboliczna do zdefiniowania. Wyrażenie lub rejestr wyspecyfikowany w dyrektywach EQU lub SET będą wstawiane przy każdym wystąpieniu symbolu w bieżącym programie asemblerowym. wyrażenie numeryczne, które nie zawiera odniesień w przód lub proste relokowalne wyrażenia. rejestr jedna z nazw rejestrów, np.: A, R0, R1, R2, R3, R4, R5, R6 lub R7. Symbole zdefiniowane za pomocą dyrektywy EQU lub SET mogą być użyte wszędzie w operandach, wyrażeniach lub adresach. Natomiast symbole, które są zdefiniowane jako nazwy rejestrów, mogą być użyte wszędzie, gdzie dopuszczalne jest użycie rejestrów. Nie można użyć dyrektywy SET, jeśli symbol został wcześniej zdefiniowany za pomocą dyrektywy EQU i odwrotnie. Przykłady: GRANICA EQU 1200 ROZMIAR EQU GRANICA 'A' SERIAL EQU SBUF ACCU EQU A LICZNIK1 EQU R5 WARTOSC SET 100 WARTOSC SET WARTOSC / 2 LICZNIK2 SET R1 TEMP SET LICZNIK2 TEMP SET WARTOSC * WARTOSC BIT, CODE, DATA, IDATA, XDATA 5
6 Dyrektywy BIT, CODE, DATA, IDATA, XDATA określają przyporządkowuję określonemu symbolowi wartość adresu. Symbole zdefiniowane za pomocą dyrektyw BIT, CODE, DATA, IDATA, XDATA nie mogą być zmieniane ani redefiniowane. Dyrektywy te mają następujący format: symbol BIT adres_bitu symbol CODE adres_kodur symbol DATA adres_danej symbol IDATA adres_idanej symbol XDATA adres_xdanej symbol adres_bitu adres_kodu adres_danej adres_idanej definiowana nazwa symboliczna. Może być ona używana w każdym miejscu, gdzie wymagany jest adres w pamięci wyspecyfikowanego typu. jest adresem bitu z wewnętrznej pamięci danych w przestrzeni o adresach z zakresu 20H.. 2FH adresowanej bitowo lub adresem bitu rejestru SFR adresowanego bitowo. jest adresem kodu z zakresu 0000H.. FFFFH. jest adresem rejestru SFR z zakresu adresów 80H.. FFH lub adresem z wewnętrznej pamięci danych z zakresu 0.. 7FH. jest adresem wewnętrznej pamięci danych adresowanej pośrednio z zakresu 00H.. FFH. adres_xdanej jest adresem zewnętrznej pamięci danych z zakresu Przykłady DATA_SEG SEGMENT BIT RSEG DATA_SEG ; segment relokowalny adresowany ; bitowo CTRL: DS 1 ; 1 bajtowa zmienna (CTRL) ALARM BIT CTRL.0 ; bit w relokowalnym bajcie SHUT BIT ALARM+1 ; następny bit ENABLE_FLAG BIT 60H ; bezwzględny bit DONE_FLAG BIT 24H.2 ; bezwzględny bit RESTART CODE 00H INTVEC_0 CODE RESTART + 3 INTVEC_1 CODE RESTART + 0BH INTVEC_2 CODE RESTART + 1BH SERBUF DATA SBUF ; redefinicja bufora SBUF RESULT DATA 40H RESULT2 DATA RESULT + 2 BUFFER IDATA 60H BUF_LEN EQU 20H BUF_END IDATA BUFFER + BUF_LEN 1 XSEG1 SEGMENT XDATA RSEG XSEG1 DTIM: DS 6 ;rezerwuje 6 bajtów dla DTIM TIME XDATA DTIM + 0 DATE XDATA DTIM + 3 Inicjalizacja pamięci 6
7 Dyrektywy inicjalizujące pamięć są używane do inicjalizacji przestrzeni kodu lub stałych jednostkami danych o długości bajta lub słowa. Obraz pamięci rozpoczyna się w punkcie wskazywanym przez bieżącą wartość licznika położenia w obecnie aktywnym segmencie. DB Dyrektywa DB inicjalizuje pamięć kodu 8-bitowymi wartościami bajtów. Dyrektywa DB ma następujący format: etykieta: DB wyrażenie, wyrażenie etykieta wyrażenie symbol, który określa adres inicjowanej pamięci. wartość bajtowa. Każde wyrażenie może być symbolem, ciągiem znaków lub wyrażeniem. Przykłady: Dyrektywa DB może być umieszczana tylko wewnątrz segmentu kodu programu. REQUEST: DB 'PRESS ANY KEY TO CONTINUE', 0 TABLE: DB 0,1,8,'A','0', LOW(TABLE),';' ZERO: DB 0, '''' CASE_TAB: DB LOW(REQUEST), LOW(TABLE), LOW(ZERO) DW format: Dyrektywa DW inicjalizuje pamięć kodu 16-bitowymi słowami. Dyrektywa DW ma następujący etykieta: DW wyrażenie, wyrażenie etykieta wyrażenie symbol, który określa adres inicjowanej pamięci. wartość dwubajtowa. Każde wyrażenie może być symbolem, ciągiem znaków lub wyrażeniem. Przykłady: Dyrektywa DW może być umieszczana tylko wewnątrz segmentu kodu programu. TABLE: DW 1234, 233AH, QR CASE_TAB: DW CASE0, CASE1, CASE2, CASE3, CASE4 DW $ Rezerwacja pamięci Dyrektywy rezerwacji pamięci są używane do rezerwacji przestrzeni jednostkami o długości bajta lub słowa. Rezerwacja tej przestrzeni rozpoczyna się w punkcie wskazywanym przez bieżącą wartość licznika położenia w obecnie aktywnym segmencie. DBIT Dyrektywa DBIT rezerwuje przestrzeń w segmencie danych adresowanych bitowo. Dyrektywa DBIT ma następujący format: etykieta DBIT wyrażenie 7
8 etykieta symbol, który określa adres rezerwowanej pamięci. Etykieta jest symbolem typu BIT i pobiera bieżącą wartość adresu oraz klasę pamięci aktywnego segmentu. Etykieta ta może być użyta tam, gdzie użycie segmentu tego typu jest dopuszczalne. wyrażenie liczba rezerwowanych bitów. Wyrażenie nie może zawierać odniesień w przód, symboli relokowalnych lub zewnętrznych symboli. Dyrektywa DBIT rezerwuje przestrzeń w segmencie adresowanym bitowo rozpoczynając od bieżącego adresu. Przykłady: ON_FLAG: DBIT 1 ; rezerwuje 1 bit OFF_FLAG: DBIT 2 ; rezerwuje 2 kolejne bity DS Dyrektywa DS rezerwuje określoną liczbę bajtów w przestrzeni pamięci danych. Dyrektywa DS ma następujący format: etykieta: DS wyrażenie etykieta wyrażenie symbol, który określa adres rezerwowanej pamięci. Etykieta pobiera bieżącą wartość adresu i klasę pamięci aktywnego segmentu. Etykieta ta może być użyta tam, gdzie użycie segmentu tego typu jest dopuszczalne. liczba rezerwowanych bitów. Wyrażenie nie może zawierać odniesień w przód, symboli relokowalnych lub zewnętrznych symboli. Przykłady: Dyrektywa DS rezerwuje przestrzeń w bieżącym segmencie rozpoczynając od bieżącego adresu. GAP: DS (($ + 16) AND 0FFF0H) $ DS 20 TIME: DS 8 Łączenie programów Dyrektywy związane z łączeniem (linkowaniem) programów umożliwiają wzajemną komunikację oddzielnych modułów asemblerowych przez ich nazewnictwo i zezwolenie na używanie symboli zdefiniowanych wewnątrz innych modułów. NAME Dyrektywa NAME określa nazwę, która będzie użyta dla modułu obiektowego wygenerowanego dla bieżącego programu. Nazwa pliku obiektowego nie jest nazwą modułu obiektowego. Nazwa modułu obiektowego jest wbudowana w plik obiektowy. Dyrektywa NAME ma następujący format: NAME nazwa_modułu nazwa_modułu nazwa, która będzie użyta do oznaczenia modułu obiektowego. Nie może ona przekroczyć 40 znaków. Przy określaniu nazwy modułu należy przestrzegać zasad określonych dla nazw symbolicznych. W pliku programu może być określona tylko jedna dyrektywa NAME. Jeśli dyrektywa ta nie zostanie określona, nazwą modułu obiektowego będzie nazwa pliku źródłowego bez rozszerzenia. 8
9 Przykład: NAME MOJ_MODUL PUBLIC Dyrektywa PUBLIC wylicza symbole, które są zdefiniowane w bieżącym module, a których użycie dopuszcza się w innych modułach. W efekcie daje więc ona dostęp z zewnętrznych modułów do danego modułu. Dyrektywa PUBLIC ma następujący format: PUBLIC symbol, symbol symbol musi być symbolem, który został zdefiniowany w danym pliku źródłowym. Odniesienia w tył do nazw symboli są dopuszczalne. Wszystkie nazwy symboliczne, za wyjątkiem symboli rejestrów i segmentów, mogą być specyfikowane w dyrektywie PUBLIC. Przy wprowadzaniu kilku symboli należy rozdzielać je przecinkami. Jeśli symbole publiczne mają być użyte w innym pliku źródłowym, należy użyć w nim dyrektywy EXTRN określającej, że symbole są zadeklarowane w innym module obiektowym. Przykład: PUBLIC PUBLIC PUT_CLRF, PUT_STRING, PUT_EOS ASCII_BIN, BIN_ASCII EXTRN Dyrektywa EXTRN wylicza symbole (związane z danym modułem źródłowym), które są w rzeczywistości zadeklarowane w innym module. Format dyrektywy EXTRN ma następującą postać: EXTRN klasa (symbol, symbol ) klasa symbol jest klasą pamięci (BIT, CODE, DATA, IDATA, XDATA), w której został zdefiniowany symbol. jest nazwą zewnętrznego symbolu. Dyrektywa EXTRN może występować w dowolnym miejscu programu źródłowego. Przy wprowadzaniu kilku symboli należy rozdzielić je przecinkami i umieścić w nawiasach za informacją o klasie. Nazwy symboliczne, które są określane w dyrektywie EXTRN, muszą być wcześniej określone jako symbole publiczne przy pomocy dyrektywy PUBLIC w pliku źródłowym, w którym zostały one zadeklarowane. Linker rozpoznaje wszystkie symbole zewnętrzne w czasie linkowania i weryfikuje, czy klasa symbolu (określona w dyrektywie EXTRN i PUBLIC) zgadza się. Przykład: EXTRN CODE (PUT_CLRF, PUT_STRING, PUT_EOS) EXTRN CODE (ASCII_BIN, BIN_ASCII) Przełączanie adresów Poniższe dyrektywy umożliwiają sterowanie licznikiem położenia lub symbolami rejestrów absolutnych. ORG Dyrektywa ORG jest używana do zmiany obecnie aktywnego segmentu i ustalenia nowego początku dla dalszych instrukcji. Dyrektywa ORG ma następujący format: 9
10 ORG wyrażenie wyrażenie musi być wyrażeniem absolutnym lub relokowalnym w prosty sposób bez odniesień w przód. Mogą być używane tylko adresy absolutne lub wartości symboliczne z bieżącego segmentu. Kiedy zostanie napotkana instrukcja ORG, asembler oblicza wartość wyrażenia i ustala lokalizację dla bieżącego segmentu. Jeśli instrukcja ORG wystąpi w segmencie absolutnym, lokalizacja jest jako absolutna wartość adresu. Jeśli instrukcja ORG wystąpi w segmencie relokowalnym, to lokalizacja określona wyrażeniem jest ustalana jako offset adresu. Przykłady: ORG ORG ORG ORG 100H RESTART EXIT1 ($ + 16) AND 0FFF0H USING Dyrektywa USING określa, który bank rejestrów ma być użyty dla kodowania rejestrów AR0 do AR7. Dyrektyw ta jest określana jak poniżej: USING wyrażenie wyrażenie jest numerem banku rejestrów, który jest wartością z zakresu 0 do 3. Dyrektywa USING nie generuje żadnego kodu zmieniającego bank rejestrów, dlatego należy się upewnić, że wybrano właściwy bank rejestrów. Do zmiany banku rejestrów można użyć poniższy przykład, w którym wybrano bank 2 rejestrów: PUSH PSW MOV PSW,#(2 SHL 3) POP PSW ;zapamiętanie PSW/banku rejestrów ;wybór banku 2 rejestrów ;inne instrukcje ;przywrócenie PSW/banku rejestrów Bank rejestrów wybrany przez dyrektywę USING jest zaznaczany w pliku *.obj, a przestrzeń pamięci wymagana przez ten bank rejestrów rezerwowana przez linker. Wartości AR0 do AR7 są obliczane jako absolutne adresy rejestrów R0 do R7 w banku rejestrów określonym przez dyrektywę USING. Niektóre instrukcje jak PUSH i POP umożliwiają tylko użycie absolutnych adresów rejestrów. Domyślnie do symboli AR0 do AR7 przypisane są rejestry banku 0. UWAGA. Kiedy dyrektywa EQU jest użyta do zdefiniowania symboli dla ARn, adres rejestru Rn jest obliczany w momencie definiowania symbolu, a nie w miejscu jego użycia. Kiedy dyrektywa USING zmienia później bank rejestrów, zdefiniowany symbol nie ma właściwego adresu rejestru ARn i generowany kod jest prawdopodobnie niepoprawny. 10
11 Inne dyrektywy END Dyrektywa END określa koniec modułu asemblerowego. Tekst, który występuje za dyrektywą END jest ignorowany. Dyrektywa END jest wymagana w każdym pliku asemblerowym. Przykład: END Symbole Symbol jest nazwą, która jest definiowana w celu reprezentacji wartości, bloku tekstu, adresu lub nazwy rejestru. Symbole mogą być również używane do reprezentowania stałych numerycznych i wyrażeń. Nazwy symboliczne Symbole mogą zawierać do 31 znaków z listy znaków podanej poniżej: A-Z, a-z, 0-9, _,? Nazwa symboliczna może rozpoczynać się od dowolnego z tych znaków, za wyjątkiem cyfr 0-9. Symbole mogą być definiowane w wielu różnych przypadkach. Można definiować symbol do reprezentacji wyrażeń: NUMER EQU 5 PRAWDA SET 1 FALSZ SET 0 etykiet w programie ETYKIETA_1: DJNZ R0, ETYKIETA_1 lub odniesień do adresu zmiennej BUFOR_SZER DATA 99H Symbole są używane w całym programie asemblerowym. Nazwa symboliczna jest łatwiejsza do zrozumienia i zapamiętania, niż adres lub stała numeryczna. Etykiety Etykieta definiuje miejsce (adres) w przestrzeni programu lub danych. Wszystkie zasady dotyczące tworzenia nazw symbolicznych mają zastosowanie przy tworzeniu etykiet. Podczas ich definiowania, etykieta musi być pierwszym polem tekstowym w linii. Może być ona poprzedzona znakami tabulacji i/lub spacji. Znak dwukropka (:) musi wystąpić bezpośrednio po nazwie symbolicznej etykiety, aby można było rozpoznać, że jest to etykieta. W linii może być zdefiniowana tylko jedna etykieta. Na przykład: ETYK_1: DS 2 ETYK_2: ; etykieta na siebie samą LICZBY: DB 27, 33, ZNAKI, 0 ; etykieta na stałe KOPIUJ: MOV R6, #12H ; etykieta na instrukcję w programie W powyższym przykładzie, ETYK_1, ETYK_2, LICZBY i KOPIUJ są etykietami. Etykieta może odnosić się do kodu programu, przestrzeni zmiennych w wewnętrznej lub zewnętrznej pamięci danych lub stałej przechowywanej w przestrzeni programu. Przy definiowaniu etykiety przejmuje ona bieżącą wartość licznika położenia danego segmentu. 11
12 Etykieta jest również używana w instrukcjach skoków, do wskazania miejsca (adresu) przeznaczenia. Instrukcja występująca za etykieta jest tą instrukcją, która będzie wykonywana po skoku pod adres programu wskazany etykietą. W programie można nie tylko wykonywać skoki pod określone etykiety, lecz także wywoływać podprogramy określone etykietą. W takim przypadku wykonywany jest kod znajdujący się za etykieta, aż do napotkania instrukcji asemblerowej RET. Wyrażenia i operatory Operand (argument operacji) może być stałą numeryczną, nazwą symboliczną, ciągiem znakowym lub wyrażeniem. Operatory są używane do łączenia i porównywania operandów wewnątrz programu asemblerowego. Operatory nie są instrukcjami języka asemblera, ani nie generują kodu asemblerowego. Reprezentują one operacje, które są szacowane w czasie asemblacji programu. Dlatego operatory mogą obejmować tylko obliczenia wartości, które są znane podczas asemblacji programu. Wyrażenie jest połączeniem liczb, ciągów znakowych symboli i operatorów, które podlega zamianie na 16-bitowaą wartość binarną. Wyrażenia są szacowane podczas asemblacji i dlatego mogą być używane do obliczania wartości, które w innym przypadku byłyby trudne do wyznaczenia wcześniej. Liczby Liczby mogą być określane jako wartości: szesnastkowe, dziesiętne, ósemkowe lub dwójkowe. Podstawa liczby jest określana przez ostatni znak w liczbie. Liczba, która jest zapisana bez specyfikatora podstawy, jest interpretowana jako liczba dziesiętna. Poniższa tabela pokazuje specyfikatory podstawy liczb, przyrostki i przykłady. Podstawa Przyrostek Dopuszczalne znaki Przykłady Szesnastkowa H, h 0-9, A-F, a-f 1234H 0A0F0H 0F0H 1a24h 34fcH Dziesiętna D, d D 2092d Ósemkowa O, o, Q, q q 34Q 345o 44O Dwójkowa B, b 0 i b 10011B Pierwszym znakiem liczby musi być zawsze cyfra z zakresu 0 do 9. Liczby szesnastkowe, których zapis wartości zaczyna się od litery muszą być poprzedzone cyfrą 0. Znaki Asembler A51dopuszcza użycie znaków ASCII w wyrażeniach do tworzenia wartości numerycznych. Wyrażenie takie może składać się maksymalnie z dwóch znaków objętych pojedynczym apostrofem ( ). Umieszczenie większej ilości znaków spowoduje wygenerowanie błędu podczas asemblacji. Poniżej przedstawiono kilka przykładów: A jest przeliczane na wartość 0041H AB jest przeliczane na wartość 4142H a jest przeliczane na wartość 0061H ab jest przeliczane na wartość 6162H ciąg pusty jest przeliczany na wartość 0000H abc generuje BŁĄD Znaki można również używać w każdym miejscu programu, gdzie wymagane są dane bezpośrednie. LITERA_A EQU A TEST: F SUBB A,# 0 12
13 Ciągi znaków Ciągi znaków mogą być używane w połączeniu z dyrektywą DB do definiowania wiadomości uzywanych w programie. Taki ciąg musi być objęty pojedynczym apostrofem ( ). Na przykład: WIADOMOSC DB Wcisnij dowolny klawisz, aby kotynuowac. generuje szesnastkowe dane (57H, 63H, 69H, 73H, 6EH 69H 6AH,, 61H, 63H, 2EH) rozpoczynając od adresu oznaczonego etykietą WIADOMOSC. Ciągi i dane liczbowe mogą być łączone ze sobą w jednej linii. Na przykład: EOL_WIAD DB Koniec linii, 00H dodaje wartość 00H na koniec ciągu Koniec linii. Aby wstawić w definiowanym ciągu znakowym znak pojedynczego apostrofu, należy wyspecyfikować go dwukrotnie pod rząd. MSG DB ISN T A QUOTE REQUIRED HERE? 13
14 ; Source code template for A251/A51 assembler modules. ; Copyright (c) KEIL Software, Inc. $NOMOD51 ; dezaktywacja predefiniowanych rejestrów 8051 $INCLUDE (REG52.INC) ; dołączenie pliku definiującego rejestry CPU ; (tutaj 8052) ; Zmień nazwy napisane małymi literami, aby dostosować wzór do własnych ; potrzeb. ; ; Ten szablon pokazuje idee użycia asemblera A51. Nie jest wymagane, ; aby każdy moduł tworzyć w ten sposób to jest tylko przykład. ; ; Wszystkie wpisy za wyjątkiem dyrektywy END na końcu pliku są opcjonalne. ; ; Jeśli użyjesz tego szablonu upewnij się, że wszystkie nieużywane ; deklaracje segmentów jak również zmienne i instrukcje asemblerowe ; zostały usunięte. ; ; Ten plik nie pokazuje wszystkich możliwości asemblera A51. ; Po więcej informacji należy odnieść się do User's Guide. ; Nazwa modułu (opcjonalna) NAME module_name ; W tym miejscu można importować symbole z innych modułów. EXTRN CODE (code_symbol) ; Mogą tu wystąpić nazwy podprogramów ; zadeklarowane w segmentach CODE lub z ; dyrektywą CODE. EXTRN DATA (data_symbol) ; Mogą tu wystąpić wszystkie symbole ; zadeklarowane w segmentach DATA lub z ; dyrektywą DATA. EXTRN BIT (bit_symbol) ; Mogą tu wystąpić wszystkie symbole ; zadeklarowane w segmentach BIT lub z ; dyrektywą BIT. EXTRN XDATA (xdata_symbol) ; Mogą tu wystąpić wszystkie symbole ; zadeklarowane w segmentach XDATA lub z ; dyrektywą XDATA. EXTRN NUMBER (typeless_symbol) ; Mogą tu wystąpić wszystkie symbole ; zadeklarowane z dyrektywą EQU lub SET. ; Instrukcja EXTRN może zawierać więcej niż jeden symbol. EXTRN CODE (sub_routine1, sub_routine2), DATA (variable_1) ; Wymuszenie nowej strony w pliku listingu. $EJECT 1
15 ; W tym miejscu można eksportować symbole do innych modułów PUBLIC data_variable PUBLIC code_entry PUBLIC typeless_number PUBLIC xdata_variable PUBLIC bit_variable ; Instrukcja PUBLIC może zawierać więcej niż jeden symbol. PUBLIC data_variable1, code_table, typeless_num1, xdata_variable1 ; Umieszczenie segmentu stosu STACK w głównym module.?stack SEGMENT IDATA ;?STACK jest umieszczane w pamięci IDATA. RSEG?STACK ; przejście do segmentu?stack. DS 5 ; rezerwacja przestrzeni dla stosu ; w tym wypadku 5 bajtów. $EJECT ; Deklaracje segmentów i zmiennych. ; Segment DATA rezerwuje przestrzeń w pamięci DATA. Należy go skasować, gdy ; nie jest używany. data_s_name SEGMENT DATA ; segment dla DATA RAM. RSEG data_s_name ; przejście do segmentu data data_variable: DS 1 ; rezerwuje 1 bajt dla data_variable data_variable1: DS 2 ; rezerwuje 2 bajty dla data_variable1 ; Segment XDATA - rezerwuje przestrzeń w pamięci XDATA. Należy go skasować, gdy ; nie jest używany. xdata_s_name SEGMENT XDATA ; segment dla XDATA RAM RSEG xdata_s_name ; przejście do segmentu xdata xdata_variable: DS 1 ; rezerwuje 1 bajt dla xdata_variable xdata_array: DS 500 ; rezerwuje 500 bajtów dla xdata_array ; Segment absolutny w XDATA rezerwuje przestrzeń w pamięci XDATA od ; adresu absolutnego. Należy go skasować, gdy nie jest używany. XSEG AT 8000H ; przełączenie na segment absolutny ; w pamięci XDATA od adresu 8000H XIO: DS 1 ; rezerwacja 1 bajta dla XIO XCONFIG: DS 1 ; rezerwacja 1 bajta dla XCONFIG ; Segment BIT rezerwuje przestrzeń w pamięci BIT. Należy go skasować, gdy nie ; jest używany. bit_s_name SEGMENT BIT ; segment dla BIT RAM. RSEG bit_s_name ; przejście do segmentu bitowego bit_variable: DBIT 1 ; rezerwuje 1 bit dla bit_variable bit_variable1: DBIT 4 ; rezerwuje 4 bity dla bit_variable1 2
16 ; Deklaracja stałych (bez określonego typu) numerycznych. typeless_number EQU 0DH ; przypisuje 0D hex typeless_num1 EQU typeless_number-8 ; oblicza typeless_num1 $EJECT ; Powoduje skok LJMP na start. ; Można użyć tego stylu przy wykorzystywaniu przerwań. CSEG AT 0 ; segment absolutny od adresu 0 LJMP start ; skok na start ; W celu dodania podprogramu obsługi przerwania, należy umieścić ; instrukcję LJMP do tego podprogramu pod odpowiednim adresem wektora ; przerwań. CSEG AT 0BH ; 0BH jest adresem wektora przerwania ; dla licznika 0 LJMP timer0int ; Segment CODE rezerwuje przestrzeń w pamięci CODE dla instrukcji ; asemblerowych. code_seg_namesegment CODE RSEG code_seg_name; przełączenie na segment code USING 0 ; użycie banku 0 rejestrów dla poniższego ; kodu programu start: MOV SP,#?STACK-1 ; przypisanie początku stosu do rejestru SP ; Tutaj umieść swój program asemblerowy. Poniższy kod nie jest funkcjonalny. ORL IE,#82H ; aktywacja systemu przerwań (licznik 0) SETB TR0 ; aktywacja licznika 0 repeat_label:mov A,data_symbol ADD A,#typeless_symbol CALL code_symbol MOV DPTR,#xdata_symbol MOVX A,@DPTR MOV R1,A PUSH AR1 CALL sub_routine1 POP AR1 ADD A,R1 JMP repeat_label code_entry: CALL code_symbol RET code_table: DW repeat_label DW code_entry DB typeless_number DB 0 $EJECT 3
17 ; Przydziel każdemu podprogramowi obsługi przerwania jego własny segment kodu. int0_code_segsegment CODE ; segment dla podprogramu przerwania RSEG int0_code_seg ; przełączenie na segment code USING 1 ; bank rejestrów dla podprogramu przerwania timer0int: PUSH PSW MOV PSW,#08H ; bank 1 rejestrów PUSH ACC MOV R1,data_variable MOV DPTR,#xdata_variable MOVX A,@DPTR ADD A,R1 MOV data_variable1,a CLR A ADD A,#0 MOV data_variable1+1,a POP ACC POP PSW RETI ; Dyrektywa END jest zawsze wymagana. END ; Koniec pliku 4
18 NAME PRZETWORNIK_CA ADRES_CA EQU 8000H ;definicja stałej o wartości 8000H BIT_SEG SEGMENT BIT ;definicja segmentu relokowalnego RSEG BIT_SEG ;w pamięci adresowanej bitowo ZNACZNIK: DBIT 1 ;zmienna o rozmiarze 1-go bita ZMIENNE_SEG SEGMENT DATA ;definicja segmentu relokowalnego RSEG ZMIENNE_SEG ;w pamięci adresowanej bezpośrednio WARTOSC: DS 1 ;zmienna o rozmiarze 1-go bajta CSEG AT 0 ;absolutny segment kodu od adresu 0 LJMP START ;skok instrukcji oznaczonej etykietą START ORG 0BH LJMP T0_INT ORG 23H LJMP SER_INT ;absolutny segment kodu od adresu 0BH ;skok do instrukcji oznaczonej etykietą T0_INT ;absolutny segment kodu od adresu 23B ;skok do instrukcji oznaczonej etykietą SER_INT START: MOV SP,#60H ;początek prog. Głównego; ustawienie wskaźnika stosu MOV TMOD, #21H ;T0 tryb 0, T1 tryb 2 MOV TL0, #0AFH ;wartość początkowa licznika T0; przerwanie będzie MOV TH0, #3CH ;wyzwalane co 50ms dla rezonatora 12MHz MOV TL1, #0FDH ;wartość początkowa licznika T1 taktującego port MOV TH1, #0FDH ;szeregowy MOV SCON, #50H ;tryb 1 portu szeregowego MOV WARTOSC, #0 ;wartość początkowa zmiennej WARTOSC SETB ZNACZNIK ;wartość początkowa znacznika ZNACZNIK 1
19 SETB TRO SETB TR1 MOV IE,# B SJMP $ ;uruchomienie licznika T0 ;uruchomienie licznika T1 ;aktywacja przerwań od T0 i portu szeregowego ;koniec programu głównego, skok na siebie T0_INTSEG SEGMENT CODE ;relokowalny segment kodu dla podprogramu obsługi RSEG T0_INT_SEG ;przerwania od licznika T0 T0_INT: ORL TH0, #0AFH ;przepisanie początkowych wartości MOV TH0, #3CH ;do rejestrów licznika JNB ZNACZNIK, OPUSC_T ; jeśli ZNACZNIK różny od 1 to skacz PUSH A ;zapamiętanie zawartości akumulatora na stosie MOV A, WARTOSC MOV DPTR, #ADRES_CA ;zapis adresu przetwornika C/A do rejestru DPTR A ;wysłanie wartości do przetwornika C/A INC WARTOSC ;inkrementacja zmiennej WARTOSC POP A ;ściągnięcie ze stosu wartości akumulatora OPOSC_T: RETI ; tutaj; koniec podprogramu obsługi przerwania SER_INT_SEG SEGMENT CODE ;relokowalny segment kodu dla podprogramu obsługi RSEG SER_INT_SEG ;przerwania od portu szeregowego SER_INT: PUSH A ;zapamiętanie zawartości akumulatora na stosie CLR RI ;zerowanie znacznika odebrania znaku MOV A, SBUF ;odczyt bufora portu szeregowego CJNE A, #10, OPUSC_S ;gdy odebrana wartość różna od 10, to CPL ZNACZNIK ;negacja bitu ZNACZNIK OPUSC_S: POP A ; skacze tutaj RETI ;koniec podprogramu obsługi przerwania END ;koniec programu 2
1. Dyrektywy asemblerowe
1. Dyrektywy asemblerowe Asembler A51 ma kilka dyrektyw, które pozwalają na definiowanie symboli, wartości, rezerwację i inicjalizację pamięci oraz sterowanie umiejscowieniem kodu programu. Dyrektywy nie
petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla
Asembler A51 1. Symbole Nazwy symboliczne Symbol jest nazwą, która może być użyta do reprezentowania wartości stałej numerycznej, wyrażenia, ciągu znaków (tekstu), adresu lub nazwy rejestru. Nazwy symboliczne
Struktura programu w asemblerze mikrokontrolera 8051
Struktura programu w asemblerze mikrokontrolera 8051 Program w asemblerze, dający ten sam kod wynikowy, może być napisany na wiele sposobów. Źle napisany program po pewnym czasie (a być może już w czasie
architektura komputerów w 1 1
8051 Port P2 Port P3 Transm. szeregowa Timery T0, T1 Układ przerwań Rejestr DPTR Licznik rozkazów Pamięć programu Port P0 Port P1 PSW ALU Rejestr B SFR akumulator 8051 STRUKTURA architektura komputerów
Wstęp do assemblera MA51
Wstęp do assemblera MA51 Ryszard J. Barczyński, 2017 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Assembler Assembler to język programowania
CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe
MIKROKONTROLER RODZINY MCS 5 Cykl rozkazowy mikrokontrolera rodziny MCS 5 Mikroprocesory rodziny MCS 5 zawierają wewnętrzny generator sygnałów zegarowych ustalający czas trwania cyklu zegarowego Częstotliwość
Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne
Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...
Mikrokontroler ATmega32. Język symboliczny
Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami
Przerwania w architekturze mikrokontrolera X51
Przerwania w architekturze mikrokontrolera X51 (przykład przerwanie zegarowe) Ryszard J. Barczyński, 2009 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku
Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED
Ćwiczenie 2 Siedmiosegmentowy wyświetlacz LED 2-1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się studentów ze sposobem obsługi wielopozycyjnego 7-segmentowego wyświetlacza LED multipleksowanego programowo
Lista rozkazów mikrokontrolera 8051
Lista rozkazów mikrokontrolera 8051 Spis treści: Architektura mikrokontrolera Rozkazy Architektura mikrokontrolera Mikrokontroler 8051 posiada trzy typy pamięci: układ zawiera pamięć wewnętrzną (On-Chip
Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe
Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe Ryszard J. Barczyński, 2009 2013 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Obsługa portu szeregowego laboratorium: 05 autor: mgr inż. Michal Lankosz dr hab.
Wykład 4. Środowisko programistyczne
Wykład 4 Dostępne kompilatory KEIL komercyjny GNU licencja GPL ARM komercyjny IAR komercyjny 2 Porównanie kompilatorów 3 Porównanie kompilatorów 4 Keil uvision Graficzny edytor Kompilator i linker Symulator
Programowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 8: Procedury Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Linkowanie z bibliotekami zewnętrznymi Operacje na stosie
Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW
Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW MIKROKONTROLER 85 - wiadomości podstawowe. Schemat blokowy mikrokontrolera 85 Obszar rejestrów specjalnych
Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne
Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Przerwania laboratorium: 04 autor: mgr inż. Michał Lankosz dr hab. Zbisław Tabor,
Politechnika Warszawska
Politechnika Warszawska Wydział Elektryczny Laboratorium Podstaw Techniki Mikroprocesorowej Skrypt do ćwiczenia M.38 Zbieranie pomiarów w czasie rzeczywistym - asembler 1.Wstęp W ćwiczeniach od M.38 do
Programowanie mikrokontrolera 8051
Programowanie mikrokontrolera 8051 Podane poniżej informacje mogą pomóc w nauce programowania mikrokontrolerów z rodziny 8051. Opisane są tu pewne specyficzne cechy tych procesorów a także podane przykłady
START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)
Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01 PRACA KROKOWA MIKROKONTROLERA Cel ćwiczenia: Zapoznanie się ze środowiskiem programowym: poznanie funkcji asemblera, poznanie funkcji symulatora. Operacje na plikach,
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe
Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4
Przedmiot : Programowanie w języku wewnętrznym Ćwiczenie nr 4 str. 1. 1. Użycie Asemblera. Polecenie JMP. Polecenie nakazuje procesorowi wykonywanie kodu programu od nowego innego miejsca. Miejsce to jest
Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów
Operacje na stosie Stos jest obszarem pamięci o dostępie LIFO (Last Input First Output). Adresowany jest niejawnie przez rejestr segmentowy SS oraz wskaźnik wierzchołka stosu SP. Używany jest do przechowywania
Architektura komputerów
Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania
end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.
Struktura programu typu program.com ; program według modelu tiny name "mycode" ; nazwa pliku wyjściowego (maksymalnie 8 znaków) org 100h ; początek programu od adresu IP = 100h ; kod programu ret ; koniec
Wstępdo assemblera MA51
no MACRO yes Wstępdo assemblera MA51 c.d. makrodefinicje Ryszard J. Barczyński, 2017 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Assembler
Technika mikroprocesorowa
Technika mikroprocesorowa Leksykon kieszonkowy Mirosław Kozioł Instytut Metrologii, Elektroniki i Informatyki 2016 Instytut Metrologii, Elektroniki i Informatyki, Uniwersytet Zielonogórski Niniejsze opracowanie
Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Programowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 11: Procedury zaawansowane Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC,
TMiK Podstawy Techniki Mikroprocesorowej. Lidia Łukasiak
TMiK Podstawy Techniki Mikroprocesorowej Materiały pomocnicze do wykładu Lidia Łukasiak 1 Treść przedmiotu Wprowadzenie System mikroprocesorowy Mikroprocesor - jednostka centralna Rodzaje pamięci Mikrokontrolery
Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1
Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1 PODSTAWY TECHNIKI CYFROWEJ I MIKROPROCESOROWEJ EIP KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA
Asembler - język maszynowy procesora
UWAGA! Treść niniejszego dokumentu powstała na podstawie cyklu artykułów pt. Mikrokontrolery? To takie proste zamieszczonych w czasopiśmie Elektronika dla Wszystkich. Asembler - język maszynowy procesora
Wstęp. do języka C na procesor 8051. (kompilator RC51)
Wstęp do języka C na procesor 8051 (kompilator RC51) Kompilator języka C Kompilator RC51 jest kompilatorem języka C w standardzie ANSI Ograniczeń w stosunku do ANSI jest niewiele głównie rzadkie operacje
Techniki mikroprocesorowe i systemy wbudowane
Techniki mikroprocesorowe i systemy wbudowane Wykład 1 Procesory rodziny AVR ATmega. Wstęp Wojciech Kordecki wojciech.kordecki@pwsz-legnica.eu Państwowa Wyższa Szkoła Zawodowa im. Witelona w Legnicy Wydział
PMiK Programowanie Mikrokontrolera 8051
PMiK Programowanie Mikrokontrolera 8051 Wykład 3 Mikrokontroler 8051 PMiK Programowanie mikrokontrolera 8051 - wykład S. Szostak (2006) Zmienna typu bit #define YES 1 // definicja stałych #define NO 0
Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler
Programowanie hybrydowe C (C++) - assembler MS Visual Studio Inline Assembler Wprowadzenie Możliwość wprowadzania kodu asemblerowego bezpośrednio w kodzie źródłowym w języku C lub C++ Nie wymagany MASM
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje
MIKROPROCESORY architektura i programowanie
Systematyczny przegląd. (CISC) SFR umieszczane są w wewnętrznej pamięci danych (80H 0FFH). Adresowanie wyłącznie bezpośrednie. Rejestry o adresach podzielnych przez 8 są też dostępne bitowo. Adres n-tego
Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych
Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Wstęp do programowania w asemblerze laboratorium: 01 autor: mgr inż. Michał Lankosz
Programowanie mikrokontrolerów (CISC)
Repertuar instrukcji Operacje arytmetyczne Operacje logiczne Operacje logiczne na bitach Przesyłanie danych Operacje sterujące (skoki) NOTACJA: Rr rejestry R0... R7 direct - wewnętrzny RAM oraz SFR @Ri
1.1. Pozycyjne systemy liczbowe
1.1. Pozycyjne systemy liczbowe Systemami liczenia nazywa się sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach. Dla dowolnego
Assembler A A 51 ASSEMBLER
Assembler A51-1 - A 51 ASSEMBLER Operatory, adresowanie i wyrażenia Programy asemblera dla procesorów 8051 składają się ze zbioru instrukcji. Pojedyncza linia programu może zawierać najwyżej jedną instrukcję
IV PROGRAMOWANIE MIKROKOMPUTERA Technika Cyfrowa 2. Wykład 4: Programowanie mikrokomputera 8051
Technika Cyfrowa 2 Wykład 4: Programowanie mikrokomputera 81 dr inż. Jarosław Sugier Jaroslaw.Sugier@pwr.wroc.pl IIAR, pok. 227 C-3 4-1 IV PROGRAMOWANIE MIKROKOMPUTERA 81 1 REJESTRY Oprócz DPTR wszystkie
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Pracownia elektryczno-elektroniczna klasa IV
Ćwiczenie nr 5 Cel ćwiczenia: Ćwiczenie ma na celu zaznajomienie z metodami odliczania czasu z wykorzystaniem układów czasowo - licznikowych oraz poznanie zasad zgłaszania przerwań i sposobów ich wykorzystywania
Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET
Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET Technika mikroprocesorowa Instrukcja 3 Stos i podprogramy Autor: Paweł Russek Tłumaczenie: Marcin Pietroń http://www.fpga.agh.edu.pl/tm ver.
Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów
Marcin Stępniak Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów 1. Informacje Poniższe laboratoria zawierają podsumowanie najważniejszych informacji na temat
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
Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście
architektura komputerów w 1 1
8051 Port P2 Port P3 Serial PORT Timers T0, T1 Interrupt Controler DPTR Register Program Counter Program Memory Port P0 Port P1 PSW ALU B Register SFR accumulator STRUCTURE OF 8051 architektura komputerów
Logiczny model komputera i działanie procesora. Część 1.
Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.
Celem ćwiczenia jest zapoznanie z obsługą klawiatury sekwencyjnej i matrycowej w systemie DSM-51.
Ćwiczenie nr 4 Cel ćwiczenia: Celem ćwiczenia jest zapoznanie z obsługą klawiatury sekwencyjnej i matrycowej w systemie DSM-51. Wiadomości wstępne: Klawiatura sekwencyjna zawiera tylko sześć klawiszy.
Pracownia elektryczno-elektroniczna klasa IV
Ćwiczenie nr 2 Cel ćwiczenia: zapoznanie się z nowymi metodami adresowania portów, urządzeń do nich podpiętych (adresowanie pośrednie, bezpośrednie, rejestrowe) oraz poznanie struktury wewnętrznej pamięci
PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA
PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje Deklaracja zmiennych Zmienne łańcuchowe
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci,
Struktura i działanie jednostki centralnej
Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala
ZAPOZNANIE SIĘ Z ZESTAWEM DYDAKTYCZNYM ZD537, OPROGRAMOWANIEM µvision 2 ORAZ OPERACJE NA PAMIĘCIACH
PROWADZĄCY: mgr inż. Piotr Radochoński LABORATORIUM Z PODSTAW TECHNIK MIKROPROCESOROWYCH WYKONAWCY : GRUPA : 1 Dawid Pichen WYKONANO : Leszek Wiland 09.03.2005 NR ĆWICZ. TEMAT : 1 ROK AK. II ODDANO : 20.03.2005
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury Cel ćwiczenia: Głównym celem ćwiczenia jest nauczenie się obsługi klawiatury. Klawiatura jest jednym z urządzeń wejściowych i prawie zawsze występuje
Podstawy Informatyki Języki programowania c.d.
Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy 2 Makroasembler - założenia Przykład
MIKROPROCESORY architektura i programowanie
Struktura portów (CISC) Port to grupa (zwykle 8) linii wejścia/wyjścia mikrokontrolera o podobnych cechach i funkcjach Większość linii we/wy może pełnić dwie lub trzy rozmaite funkcje. Struktura portu
Stan wysoki (H) i stan niski (L)
PODSTAWY Przez układy cyfrowe rozumiemy układy, w których w każdej chwili występują tylko dwa (zwykle) możliwe stany, np. tranzystor, jako element układu cyfrowego, może być albo w stanie nasycenia, albo
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można
Mikroprocesor Operacje wejścia / wyjścia
Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych
Architektura komputerów. Asembler procesorów rodziny x86
Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych
Ćwiczenie 30. Techniki mikroprocesorowe Programowanie w języku Asembler mikrokontrolerów rodziny '51
Ćwiczenie 30 Techniki mikroprocesorowe Programowanie w języku Asembler mikrokontrolerów rodziny '51 Cel ćwiczenia Poznanie architektury oraz zasad programowania mikrokontrolerów rodziny 51, aby zapewnić
Start Bity Bit Stop 1 Bit 0 1 2 3 4 5 6 7 Par. 1 2. Rys. 1
Temat: Obsługa portu komunikacji szeregowej RS232 w systemie STRC51. Ćwiczenie 2. (sd) 1.Wprowadzenie do komunikacji szeregowej RS232 Systemy bazujące na procesorach C51 mogą komunikować się za pomocą
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
Język C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
MIKROKONTROLERY I MIKROPROCESORY
PLAN... work in progress 1. Mikrokontrolery i mikroprocesory - architektura systemów mikroprocesorów ( 8051, AVR, ARM) - pamięci - rejestry - tryby adresowania - repertuar instrukcji - urządzenia we/wy
Kurs Zaawansowany S7. Spis treści. Dzień 1
Spis treści Dzień 1 I Konfiguracja sprzętowa i parametryzacja stacji SIMATIC S7 (wersja 1211) I-3 Dlaczego powinna zostać stworzona konfiguracja sprzętowa? I-4 Zadanie Konfiguracja sprzętowa I-5 Konfiguracja
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Język C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:
PRZYPOMNIJ SOBIE! Matematyka: Dodawanie i odejmowanie "pod kreską". Elektronika: Sygnały cyfrowe. Zasadę pracy tranzystorów bipolarnych i unipolarnych. 12. Wprowadzenie 12.1. Sygnały techniki cyfrowej
Ćwiczenie 1 Wędrujące światełko
Ćwiczenie 1 Wędrujące światełko Program = Data structures + Algorithm -- Niklaus Wirth Warszawa, 2007-10-16 IMiO PW, LPTM, Ćwiczenie 1, Wędrujące światełko -2-1. Cel ćwiczenia Celem ćwiczenia jest praktyczne
Hardware mikrokontrolera X51
Hardware mikrokontrolera X51 Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Hardware mikrokontrolera X51 (zegar)
ZASOBY ZMIENNYCH W STEROWNIKACH SAIA-BURGESS
ZASOBY ZMIENNYCH W STEROWNIKACH SAIA-BURGESS Autorzy Wydanie Data : : : Zespół SABUR Sp. z o.o. 3.00 Sierpień 2013 2013 SABUR Sp. z o. o. Wszelkie prawa zastrzeżone Bez pisemnej zgody firmy SABUR Sp. z
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Obsługa portów wejścia/wyjścia mikrokontrolera laboratorium: 02 autor: mgr inż.
Systemy wbudowane. Wprowadzenie. Wprowadzenie. Mikrokontroler 8051 Budowa
Systemy wbudowane Mikrokontroler 8051 Budowa dr inż. Maciej Piechowiak Wprowadzenie rdzeń CPU z jednostką artymetyczno-logiczną (ALU) do obliczeń na liczbach 8-bitowych, uniwersalne dwukierunkowe porty
TECHNIKA MIKROPROCESOROWA
LABORATORIUM TECHNIKA MIKROPROCESOROWA Port transmisji szeregowej USART MCS'51 Opracował: Tomasz Miłosławski 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się ze sposobami komunikacji mikrokontrolera
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy
Programowanie na poziomie sprzętu. Tryb chroniony cz. 1
Tryb chroniony cz. 1 Moduł zarządzania pamięcią w trybie chronionym (z ang. PM - Protected Mode) procesorów IA-32 udostępnia: - segmentację, - stronicowanie. Segmentacja mechanizm umożliwiający odizolowanie
A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym
MARIE A Machine Architecture that is Really Intuitive and Easy http://computerscience.jbpub.com/ecoa Słowo 16b Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym od 8000h (- 32,768 = -2^15) do 7FFFh
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać
Sprzęt i architektura komputerów
Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I
Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
organizacja procesora 8086
Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala
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
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Architektura komputerów
Architektura komputerów Wykład 8 Jan Kazimirski 1 Assembler x86 2 Podstawowe instrukcje x86 Instrukcje transferu danych Arytmetyka binarna i dziesiętna Instrukcje logiczne Instrukcje sterujące wykonaniem
Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP
Liczniki, rejestry lab. 08 PODSTAWY TECHNIKI CYFROWEJ I MIKROPROCESOROWEJ EIP KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA GÓRNICZO-HUTNICZA WWW.AGH.EDU.PL
Technika mikroprocesorowa I Wykład 2
Technika mikroprocesorowa I Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci, -odczyt-zapis urządzenia we-wy,
Sprzęt i architektura komputerów
Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I
imei Instytut Metrologii, Elektroniki i Informatyki
PODSTAWY TECHNIKI MIKROPROCESOROWEJ Laboratorium Elektrotechnika, studia stacjonarne pierwszego stopnia Temat: Wprowadzenie do programowania mikrokontrolerów rodziny MCS-51 imei Instytut Metrologii, Elektroniki
Ćwiczenie nr 6. Programowanie mieszane
Ćwiczenie nr 6 Programowanie mieszane 6.1 Wstęp Współczesne języki programowania posiadają bardzo rozbudowane elementy językowe, co pozwala w większości przypadków na zdefiniowanie całego kodu programu
Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].
ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości