###################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# (c) D U H A series II #
# #
# macroassembler AM80 for SORD m5 #
# #
# /operatorska prirucka/ #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #### # # # # #### #
# # # # # # # # # #
# # # # # ###### # # #
# # # # # # # ###### #
################ #### #### # # # # ## - 1 -
Format zdrojoveho souboru
-------------------------
DUHA ASM80 zpracovava zdrojove radky zapsane v ASCII kodu.
Umoznuje zpracovani oddelovacu zobrazenych jako mezery, tabela-
tory, nebo komprimovane zaznamy mezer.
Format prikazu
--------------
Zdrojovy soubor sestava z prikazu zapsanych v nasledujicim for-
matu:
- navesti, jmena maker, nebo konstant pri definici musi zacinat
v 1.sloupci.
- mnemoicka jmena instrukci, pseudoinstrukci, nebo volani maker
nesmi zacinat v 1. sloupci.
- radek direktiv musi byt uveden znakem dolar na 1. pozici.
Zapis instrukci:
[NAVESTI] [INSTRUKCE] [ARGUMENT] [;komentar....]
Definice konstant pomoci SET, EQU a definice MACRO:
JMENO SET hodnota [;komentar....]
JMENO EQU hodnota [;komentar....]
JMENO MACRO [parametry,...] [;komentar....]
Zapis direktiv:
$DIREKTIVY ODDELENE LIBOVOLNYM POCTEM ODDELOVACU
Poradi direktiv a jejich oddeleni je az na direktivu OFFSET
libovolne.
Symboly
-------
DUHA ASM80 rozlisuje velka a mala pismena. Jmena instrukci ,
pseudoistrukci a direktiv musi byt psana velkymi pismeny.
Navesti LABEL, label, Label jsou tri ruzna navesti. V tele jmen
jsou dovoleny nasledujici znaky:
A...Z, a...z, $ _ @ ? . < > [ ] { } ! # ^ \
Navesti musi zacinat pismenem. V tele navesti mohou byt libovol-
ne z povolenych znaku. Delka definovanych symbolu neni omezena,
ale pouze prvnich sedm znaku je rozhodujicich pro urceni navestiNumericke konstanty
-------------------
DUHA ASM80 pracuje s 16 bitovou aritmetikou s druhym doplnkem.
Konstanty je mozne zapisovat dekadicky, hexadecimalne, binarne,
nebo oktalove, ale vzdy musi zacinat cislici s vyjimkou ASCII
konstant. Ty jsou uzareny v apostrofech.
Rozsah konstant je 0....0FFFFH Pro zapis konstant se vyuziva
nasledujiciho formatu:
0FC3FH,15H,32H,200H...hexadecimalni konstanty /ukonceni H/
100,10000,32D.........dekadicke konstanty /bez ukonceni, nebo D/
175Q,25Q,13o..........oktalove konstanty /ukonceni Q, nebo O/
100000B,1011B.........binarni konstanty /ukonceni B/
'A', 'X' .............ASCII konstanty /uzavrene v apostrofech/
- 2 -
Retezce
-------
Textove retezce se stejne jako ASCII kostanty uzaviraji do apo-
strofu. Mohou obsahovat libovolne znky v delce max 64 znaku.
'TOTO JE TEXTOVY RETEZEC'
Vyhodnocni vyrazu
-----------------
Aritmeticke a logicke operatory
-------------------------------
Nasledujici operatory jso povoleny pro vystavbu aritmetickych a
logickych vyrazu. Operatoy jsou vypsany v poradi od nejvyssi
priority:
NUL
LOW, HIGH
*, /, MOD, SHR, SHL
- /unipolarni minus
+, -
EQ, NE, LE, LT, GT, GE
NOT
AND
OR, XORPro zmenu priority je mozne pouzit zavorky.Vyrazy se vyhodnocuji
zleva doprava. Vsechny operatory mimo +,*,-,/ musi byt oddeleny
od operandu oddelovacem /roli oddelovace muze nekdy prevzit i
zavorka/.
Pseudoinstrukce
---------------
ASEG
----
ASEG
ASEG provede nastaveni absolutniho sgmentu do programoveho ci-
tace prekladu. Toto nastaveni je implicitni a neni treba jej
provadet.Pouze pokud bylo nastaveni zmeneno jinou pseudoinstruk-
ci pro rizeni segmentoveho citace.CSEG
----
CSEG
CSEG provede nastaveni relativniho kodoveho segmentu do progra-
moveho citace prekladu.DSEG
----
DSEG
DSEG provede nastaveni relativniho datovrho segmentu do proga-
moveho citace prekladu.Segmenty ASEG, CSEG a DSEGlze v programu libovolne stridat. Po
kazde vymene a obnoveni segmentu zustava segmentovy programovy
citac zachovan. Pri prvnim vyvolani segmentu je hodnota progra-
moveho citace 0. Ve vsech pripadech je mozne ji zmenit pseudo-
instrukci ORG, nebo DS /viz dale/.
- 3 -
ORG
---
ORG <expr>
ORG slouzi k definici nove hodnoty prgramoveho citace prekladu
v ramci prave platneho segmetoveho citace. Operand pseudoin-
strukce ORG musi byt vycislitelny jiz v 1.pruchodu prekladu. Ji-
na dojde u vsech navesti za touto pseudoinstrukci k fazove chy-
be.DS
--
DS <expr>
DS umoznuje rezervovat v pameti potrebny prostor pro promenne.
Stejne jako u pseudoinstrukce ORG musi byt i zde vyraz vycisli-
telny jiz v 1. pruchodu prekladu, jinak dojde k fazove chybe.DB
--
DB <expr>[,<string>,<expr>..]
DB <string> [,<expr>,<string,...]
Argument u DB muze byt bud vyraz, nebo ASCII retezec pripadne
kombinace obou variant. Pseudoinstrukce DB zajisi ulozeni hod-
not vyrazu, nebo stringu do okamzite pozice programoveho citace
prekladu. Vyraz musi byt v intervalu 0...255, jinak dojde k
chybe preteceni.
Pr:
0000 0c414243 DB 12,'AB'
0004 64 DB 25*4DW
--
DW <expr> [,<expr>..]
DW uklada hodnotu vyrazu do okamzite pozice citace prekladu.
Vyraz a DW je vyhodnocen jako 16 bitovy /2 byty.EOT
---
EOT <file> ;jmeno filu
EOT ukonci preklad casti zdrojoveho textu a zacne cist dalsi
cast z vnejsi pameti. U diskove verze DUHA ASM80 vyhleda na
pripojenem disku specifikovany file.END
---
END [<file> ;jmeno filu, pokud byl EOT]
END ukonci preklad souboru. U diskove verze musi byt posledni
soubor z rady souboru predchazenych pseudoinstrukci EOT opatren
jmenem pocatecniho souboru.EQU
---
<konst> EQU <exr>
EQU priradi hodnotu EXPR do KONST. Vyraz EXPR nesmi byt typu
EXTERNAL. Jestlize je jiz KONST definovana, dojde k chybe vice-
nasobne definice.
- 4 -
EXTRN
-----
EXTRN <name> [,<name>,...]
EXTRN deklaruje navesti,ktera jsou definovana v jinem programo-
vem modulu. Promenne stejneho jmena, jako jsou uvedeny v seznamu
EXTRN nesmi byt jiz v zadnem miste programu definovany, jinak
vznikne chyba dvoji definice.NAME
----
NAME <jmeno modulu>
NAME umoznuje opatrit programovy modul jmenem. Jmeno muze mit
maximalne sest znaku. Prenasi se do protokolu o prekladu /li-
stingu/ do hlavicky assembleru na kazdou stranku. Pokud neni
pseudoinstrukce NAME uvedena, je vypsano jmeno MODULE. U disko-
ve verze DUHA ASM80 se jmeno prenasi i do ciloveho relokativniho
modulu.SET
---
<konst> SET <expr>
Efekt pseudoinstrukce SET je stejny jako u EQU, pouze s tim
rozdilem, ze hodnota konstanty muze byt zmenena dalsi pseudo-
instrukci SET. Je tedy umozneno predefinovani.
IF-ELSE-ENDIF
-------------
IF <expr>
1. cast programu
[ELSE
2. cast programu]
ENDIF
Pokud ma vyraz lichou hodnotu, provede se 1. cast programu, v
opacnem pripade se provede 2. cast programu, je-li uvedena
/cast s ELSE je nepovinna/. Bloky IF-ELSE-ENDIF lze libovolne
vnorovat.Directivy
---------
Directivy slouzi k rizeni prekladu. Je mozne je uvadet do
zdrojoveho souboru, ale tke do prikazoveho radku volani
ASM80 z operacniho systemu. Pokud jsou sak uvedeny ve zdrojo-
vem souboru, musi stat na radku zacinajicim znakem dolar. Pocet
directiv na radku neni omezen a na poradi obvykle nezalezi,
pokud se directivyfunkcne nevylucuji. Jedina directiva, ktera
musi byt jedina, nebo posledni na raku je directiva OFFSET.
U popisu jednotlivych directiv je v zavorce uvedeno default
nastaveni po zavedeni prekladacedo pameti systemu.
I8080, Z80, MOD85
-----------------
[Z80]
Tyto directivy slouzi k volbe modu prekladace. Po avedeni do
systemu je vzdy v platnosti Z80. Rozsireni na 8085 provede
MOD85. Mod je mozne v prubehu prekladu libovolne menit.
Pokud se vsak strida 80 a I8080, musi byt pred kazdym usekem
programu uveden typ procesoru. Tim, ze prekladac zpracuje
pseudoinstrukci END se typ procesor nemeni na default hod-
notu Z80.