Wstęp do assemblera MA51

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

Wstępdo assemblera MA51

Mikrokontroler ATmega32. Język symboliczny

Przerwania w architekturze mikrokontrolera X51

1. Dyrektywy asemblerowe

Struktura programu w asemblerze mikrokontrolera 8051

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Kompilator języka C na procesor 8051 RC51 implementacja

Algorytmika i Programowanie VBA 1 - podstawy

Podstawy programowania w języku C i C++

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Wstęp. do języka C na procesor (kompilator RC51)

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Dyrektywy asemblerowe

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

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

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

architektura komputerów w 1 1

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

Architektura komputerów. Asembler procesorów rodziny x86

Wstęp do programowania

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

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

PMiK Programowanie Mikrokontrolera 8051

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

Elementy języków programowania

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

1 Podstawy c++ w pigułce.

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

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Architektura komputerów

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

Wykład 2 Składnia języka C# (cz. 1)

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Architektura mikrokontrolera MCS51

Architektura mikrokontrolera MCS51

Lista rozkazów mikrokontrolera 8051

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

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

Architektura komputerów

Architektura typu Single-Cycle

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

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

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Programowanie niskopoziomowe

1 Podstawy c++ w pigułce.

Struktura i działanie jednostki centralnej

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Programowanie mikrokontrolera 8051

2 Przygotował: mgr inż. Maciej Lasota

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Assembler A A 51 ASSEMBLER

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

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

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

Architektura komputerów

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

Wskaźniki. Informatyka

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

Zadanie analizy leksykalnej

Języki programowania zasady ich tworzenia

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

Języki Programowania. Elementy języków programowania. Wojciech Sobieski

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

architektura komputerów w 1 1

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

1. Operacje logiczne A B A OR B

( wykł. dr Marek Piasecki )

Programowanie komputerowe. Zajęcia 1

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

Architektura Systemów Komputerowych

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Architektura komputerów

Odczyt danych z klawiatury Operatory w Javie

Instytut Teleinformatyki

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Programowanie mikrokontrolerów (CISC)

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

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Podstawy programowania C. dr. Krystyna Łapin

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Wstęp do programowania. Różne różności

Języki i metodyka programowania. Wprowadzenie do języka C

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Pracownia Komputerowa wykład V

Zmienne, stałe i operatory

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Wstęp do programowania

Wykład 4. Środowisko programistyczne

Hardware mikrokontrolera X51

Programowanie strukturalne i obiektowe

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Transkrypt:

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 charakteryzujący się tym, że... jedna instrukcja assemblera jest tłumaczona na jeden rozkaz procesora... możliwy jest bezpośredni dostęp do wszystkich zasobów systemu... praktycznie każda architektura procesora posiada własny assembler Assemblery zwykle pracują we współpracy z linkerami, bibliotekarzami itp. Assemblery zwykle często posiadają wbudowane generatory makrodefinicji

Assembler (proces tworzenia programu)

Assembler (wiersze) Program w assemblerze składa się z wierszy. Wiersz może pełnić rolę... instrukcji... dyrektyw (wpływają na utworzony kod)... dyrektyw sterujących (wpływają na przykład na formaty listingu) Każdy wiersz może być zakończony komentarzem Komentarz rozpoczyna się znakiem ; Pusty wiersz jest ignorowany (może zawierać komentarz).

Assembler (słowa kluczowe) Słowa kluczowe to symbole używane przez assembler do specjalnych celów Słowa zwykle nie mogą być przedefiniowywane i używane w innym celu Typowo w skład słów kluczowych wchodzą... mnemoniki instrukcji (MOX, XOR, itp)... symbole dyrektyw (ORG, DB, DS, itp)... (niekiedy) symbole elementów architektury procesora (A, B, IDATA, itd)... inne symbole (ELSE, GT, LT itp)

Assembler (symbole) Symbol jest w zasadzie nazwą wielkości numerycznej Symbole mogą zawierać litery, cyfry i znaki $, _ i? Symbole nie mogą zaczynać się od cyfry Wielkość liter zwykle jest ignorowana (uwaga!) Długość symbolu jest dowolna, ale... assemblery zwykle analizują pewną liczbą początkowych znaków Symbol $ ma znaczenie specjalne i oznacza adres aktualnej instrukcji Symbole są określone w całym tekście programu (wieloprzebiegowość)

Assembler (etykiety) składnia moja_etykieta: Etykieta jest symbolem oznaczającym określone miejsce w programie Etykieta może się odnosić do:... kodu programu... pamięci danych (wewnętrznej i zewnętrznej)... stałej w kodzie programu

Assembler (operandy) Operandy to argumenty instrukcji i dyrektyw. Operandy mogą być podzielona na... operandy numeryczne, znakowe i łańcuchy znaków... wskaźnik adresu ($)... rejestry (również takie jak C czy DPTR)

Assembler (operandy numeryczne, znakowe, łańcuchy) Operandy numeryczne... rozpoczynają się od cyfry.... mogą zawierać ostatnią literę oznaczającą bazę (B, H, O, D) Operandy znakowe zawierają jeden lub dwa znaki ASCII umieszczone w ' ' Łańcuch znakowy to napis ograniczony ' '... może być umieszczony tylko w dyrektywie DB

Assembler (wyrażenia numeryczne) W miejscu operandów numerycznych mogą wystąpić wyrażenia. Wyrażenia są obliczane przez assembler w trakcie assemblacji. Wyrażenie jest kombinacja operandów i operatorów. Wyrażenie może dać w wyniku symbol relokowalny. Uwaga na zakresy wielkości liczbowych!!! W wielu assemblerach nie należy traktować zbyt poważnie kolejności działań

Assembler (operatory arytmetyczne) + (dodawanie exp + exp) (odejmowanie exp exp) * (mnożenie exp * exp) / (dzielenie exp / exp) MOD (reszta exp MOD exp)

Assembler (operatory porównania) GTE lub >= (np. exp >= exp) GT lub > (np. exp GT exp) LTE lub <= (np. exp LTE exp) LT lub < (np. exp LT exp) EQ lub = (np. exp EQ exp) NE (np. exp NE exp)

Assembler (operatory przesunięcia) SHR (exp SHR exp) SHL (exp SHL exp)

Assembler (operatory logiczne) AND (exp AND exp) OR (exp OR exp) XOR (exp XOR exp)

Assembler (operatory unarne) + NOT (bitowe) LOW (młodszy bajt) HIGH (starszy bajt)

Assembler (priorytety operatorów)

Assembler (nazwy obszarów pamięci) CODE obszar pamięci programu XDATA zewnętrzna pamięć danych DATA wewnętrzna pamięć danych (0..7Fh) IDATA wewnętrzna pamięć danych adresowana pośrednio (0..0FFh) BDATA wewnętrzna pamięć adresowalna bitowo (20h..2Fh) BIT bity w pamięci adresowalnej bitowo (0..7Fh)

Assembler (segmenty) Zarządzanie pamięcią w assemblerze odbywa się za pomocą segmentów. Segmenty mogą... być umieszczone w stałym miejscu pamięci (segmenty absolutne)... być relokowalne (o ich dokładnym adresie decyduje linker) Segmenty mogą być definiowane we wszystkich rodzajach pamięci O metodzie dostępu pamięci segmentu decyduje oczywiście jej rodzaj Różne assemblery mogą się różnić w sposobie deklaracji segmentów

Assembler (segmenty absolutne) Składnia: BSEG [AT addr] CSEG [AT addr] DSEG [AT addr] IDSEG [AT addr] XSEG [AT addr] Przy braku adresu jest użyty kolejny adres w segmencie określonego typu... lub adres początkowy pamięci, jeżeli jest to pierwsze użycie Dyrektywa ORG służy do określania adresu w aktualnym segmencie Składnia: ORG exp

Assembler (segmenty relokowalne) Składnia: seg_name SEGMENT seg_type [reloc_type] seg_type: BIT, CODE, DATA, IDATA, XDATA reolc_type: BITADDRESSABLE, INBLOCK, INPAGE,... OVERLAYABLE, PAGE, UNIT

Assembler (definiowanie symboli) Składnia: symbol BIT exp symbol CODE exp symbol DATA exp symbol IDATA exp symbol XDATA exp oraz NUMBER symbol exp... (nie zalecane; stała 16 bitów)

Assembler (rezerwowanie pamięci) Składnia: [lab] DBIT exp [lab] DS exp Możliwa jest rezerwacja pewniej liczby... bitów w obszarze adresowanym bitowo... bajtów w wewnętrznej pamięci danych

Assembler (inicjalizowanie pamięci w segmencie kodu) Składnia: [lab] DB exp [, exp...] [lab] DW exp [, exp...] Dyrektywa DB dotyczy bajtów, znaków i łańcuchów Dyrektywa DW dotyczy słów 16 bitowych

Assembler (zmienne assemblera) Składnia: symb SET exp symb SET reg Zmienna assemblera może przejmować wartość numeryczną... lub nazwę rejestru

Assembler (stałe assemblera) Składnia: symb EQU exp symb EQU reg Stała assemblera może przejmować wartość numeryczną... lub nazwę rejestru

Assembler (instrukcje CALL i JMP) Lista rozkazów procesora X51 zawiera różne rozkazy skoków... (LJMP, AJMP) JMP jest dyrektywą assemblera, który wybierze skok optymalny. Podobnie CALL zostanie zamieniony na jeden z... ACALL, LCALL

Assembler (pliki) Składnia: [$]INCLUDE (Nazwa_pliku) Skrót: [$]IC Możliwa jest wielopoziomowość włączania plików Należy uważać na cykliczność włączeń

Assembler (assemblacja warunkowa) Składnia: IF exp... ENDIF IF exp... ELSE... ENDIF IF exp... ELSEIF exp... ELSE... ENDIF (bloków z ELSEIF może być wiele)

Assembler (dyrektywy dla linkera) Składnia: PUBLIC symbol [, symbol...] EXTERN seg_typ symbol [, symbol...] seg_typ to CODE, DATA, IDATA, BIT, XDATA, NUMBER Potrzeba stosowania tych dyrektyw występuje gdy używamy symboli zdefiniowanych w innym module.

Assembler (przykłady) $INCLUDE(PROTOCOL.ASM) ; ; Scoreboard type parameters ; ; *** Do10th SET 0 ; 10 th of second is installed Do30s SET 1 ; 30 sec aux clock is installed IsAthl SET 0 ; Athletics Radio SET 1 ; Radio modem is installed ; ; Game limits ; MaxRes EQU 199 ; Max number of displayed points MaxSet EQU 9 ; Max number of set number MaxHlf EQU 9 ; Max number of half

Assembler (przykłady) If (TAB904=1) ; ; Keyboard definition for foil keyboard ; KRow0 EQU P1.4 KRow1 EQU P1.5 KCol EQU P3 ; Else ; Hall keyboard ; KPointA EQU 005h KPointB EQU 012h ; Key bank selectors KBank0 EQU P3.6 KBank1 EQU P3.7 EndIf

Assembler (przykłady) LstKey: DS 1 ; The last key pressed TheKey: DS 1 ARCnt: DS 1 ; Autorepeat counter ; ClkTic: DS 1 ; Ticks for fancy displays ClkMin: DS 1 ; Main clock minutes ClkSec: DS 1 ; Main clock seconds Clk100: DS 1 ; Main clock 100 th of second ClkD10: DS 1 ; Displayed 10th of second

Assembler (przykłady) ;============================================================= CSEG ; BEGIN: JMP START ; ORG BEGIN+0Bh ; Timer 0 int. vector JMP TINTER ; CRStr: DB ' TAB 905 v.1.3.4 ', 00Dh, 00Ah, 000h

Assembler (koniec...) Składnia: END Dyrektywa END kończy tekst źródłowy modułu (Pominęliśmy dzisiaj wiele rzadziej stosowanych dyrektyw)