34
Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego

Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Wstępdo assemblera MA51Ryszard J. Barczyński, 2018Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała StałegoMateriały dydaktyczne do użytku wewnętrznego

Page 2: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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

Page 3: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (proces tworzenia programu)

Page 4: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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).

Page 5: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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)

Page 6: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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ść)

Page 7: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (etykiety)

● 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

składniamoja_etykieta:

Page 8: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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)

Page 9: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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

Page 10: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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ń

Page 11: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (operatory arytmetyczne)

● + (dodawanie exp + exp)● - (odejmowanie exp - exp)● * (mnożenie exp * exp)● / (dzielenie exp / exp)● MOD (reszta exp MOD exp)

Page 12: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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)

Page 13: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (operatory przesunięcia)

● SHR (exp SHR exp)● SHL (exp SHL exp)

Page 14: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (operatory logiczne)

● AND (exp AND exp)● OR (exp OR exp)● XOR (exp XOR exp)

Page 15: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (operatory unarne)

● +● -● NOT (bitowe)● LOW (młodszy bajt)● HIGH (starszy bajt)

Page 16: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (priorytety operatorów)

Page 17: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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)

Page 18: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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

Page 19: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (segmenty absolutne)

● 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:BSEG [AT addr]CSEG [AT addr]DSEG [AT addr]IDSEG [AT addr]XSEG [AT addr]

Składnia:ORG exp

Page 20: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (segmenty relokowalne)

● seg_type: BIT, CODE, DATA, IDATA, XDATA● reolc_type: BITADDRESSABLE, INBLOCK, INPAGE,● ... OVERLAYABLE, PAGE, UNIT

Składnia:seg_name SEGMENT seg_type [reloc_type]

Page 21: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (definiowanie symboli)

Składnia:symbol BIT expsymbol CODE expsymbol DATA expsymbol IDATA expsymbol XDATA exporazNUMBER symbol exp... (nie zalecane; stała 16 bitów)

Page 22: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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

Page 23: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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

Page 24: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (zmienne assemblera)

Składnia:symb SET expsymb SET reg

● Zmienna assemblera może przejmować wartość numeryczną ... lub nazwę rejestru

Page 25: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (stałe assemblera)

Składnia:symb EQU expsymb EQU reg

● Stała assemblera może przejmować wartość numeryczną ... lub nazwę rejestru

Page 26: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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

Page 27: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (pliki)

● Możliwa jest wielopoziomowość włączania plików● Należy uważać na cykliczność włączeń

Składnia:[$]INCLUDE (Nazwa_pliku)Skrót:[$]IC

Page 28: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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)

Page 29: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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żywamysymboli zdefiniowanych w innym module.

Page 30: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (przykłady)

$INCLUDE(PROTOCOL.ASM); --------------------------------------------------------------------; Scoreboard type parameters; --------------------------------------------------------------------; ***Do10th SET 0 ; 10 th of second is installedDo30s SET 1 ; 30 sec aux clock is installedIsAthl SET 0 ; AthleticsRadio SET 1 ; Radio modem is installed; --------------------------------------------------------------------; Game limits; --------------------------------------------------------------------MaxRes EQU 199 ; Max number of displayed pointsMaxSet EQU 9 ; Max number of set numberMaxHlf EQU 9 ; Max number of half

Page 31: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (przykłady)

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

Page 32: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (przykłady)

LstKey: DS 1 ; The last key pressedTheKey: DS 1ARCnt: DS 1 ; Autorepeat counter;ClkTic: DS 1 ; Ticks for fancy displaysClkMin: DS 1 ; Main clock - minutesClkSec: DS 1 ; Main clock - secondsClk100: DS 1 ; Main clock - 100 th of secondClkD10: DS 1 ; Displayed 10th of second

Page 33: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

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

Page 34: Wstęp do assemblera MA51 - Politechnika Gdańska · Wstęp do assemblera MA51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały

Assembler (koniec...)

● Dyrektywa END kończy tekst źródłowy modułu

(Pominęliśmy dzisiaj wiele rzadziej stosowanych dyrektyw)

Składnia:END