MATH modul


      Matematikai makrók. Adatmozgatás, 8, 16, 24 és 32 bites aritmetikai és logikai müveletek. BCD <=> Bináris átalakítás. Összehasonlítás, Feltételes elágazás. A modul használatához csak a math.mac és math.inc állományokat kell include-álni, a többi automatikusan includálódik, ha szükség van rá. A macro neveben levo 8, 16, 24 és 32-es szám az argumentumok méretét jelentik. A 16, 24, 32 bites adatok bytesorrendje magas:alacsony.

A makrók csak azonos bankon belüli argumentumokkal dolgoznak helyesen!

Szükséges definiciók a főprogramban

nincs

Opcionális definiciók a főprogramban

#define MATH_OPTSPEED                ; A szorzás és osztás optimalizációját állitja
                                     ; alapból kisebb de lassabak, ha ezt definiáljuk
                                     ; akkor nagyobbak, de gyorsabbak lesznek.

Makrók

Név Paraméter Leirás
MOV8 var8d, var8s az var8s fileregiszter tartalmát átmásolja a var8d fileregiszterbe
MOV16 var16d, var16s az var16s fileregiszter pár tartalmát átmásolja a var16d fileregiszter párba
MOV24 var24d, var24s az var24s fileregiszter hármas tartalmát átmásolja a var24d fileregiszter hármasba
MOV32 var32d, var32s az var32s fileregiszter négyes tartalmát átmásolja a var32d fileregiszter négyesbe
MOV8C var8, const a const értéket bemásolja a var8 fileregiszterbe
MOV16C var16, const a const értéket bemásolja a var16 fileregiszter párba
MOV24C var24, const a const értéket bemásolja a var24 fileregiszter hármasba
MOV32C var32, const a const értéket bemásolja a var32 fileregiszter négyesbe
XMOV16 var16d, var16s az var16s fileregiszter pár tartalmát átmásolja a var16d fileregiszter párba úgy, hogy közben felcseréli az MSB<->LSB byte-okat
INC8 var8 1-el megnöveli a var8 fileregiszter értékét
INC16 var16 1-el megnöveli a var16 fileregiszter pár értékét
INC24 var24 1-el megnöveli a var8 fileregiszter hármas értékét
INC32 var32 1-el megnöveli a var32 fileregiszter négyes értékét
DEC8 var8 1-el csökkenti a var8 fileregiszter értékét
DEC16 var16 1-el csökkenti a var16 fileregiszter pár értékét
DEC24 var24 1-el csökkenti a var24 fileregiszter hármas értékét
DEC32 var32 1-el csökkenti a var32 fileregiszter négyes értékét
NEG8 var8 negálja a var8 fileregisztert
NEG16 var16 negálja a var16 fileregiszter párt
NEG24 var24 negálja a var24 fileregiszter hármast
NEG32 var32 negálja a var32 fileregiszter négyest
CLR8 var8 törli a var8 fileregisztert
CLR16 var16 törli a var16 fileregiszter párt
CLR24 var24 törli a var24 fileregiszter hármast
CLR32 var32 törli a var32 fileregiszter négyest
SHR8 var8 1 bittel jobbra tolja a var8 fileregisztert
SHR16 var16 1 bittel jobbra tolja a var16 fileregiszter párt
SHR24 var24 1 bittel jobbra tolja a var24 fileregiszter hármast
SHR32 var32 1 bittel jobbra tolja a var32 fileregiszter négyest
SHL8 var8 1 bittel balra tolja a var8 fileregisztert
SHL16 var16 1 bittel balra tolja a var16 fileregiszter párt
SHL24 var24 1 bittel balra tolja a var24 fileregiszter hármast
SHL32 var32 1 bittel balra tolja a var32 fileregiszter négyest
ADD8 var8d, var8s összeadás: var8d = var8d + var8s
ADD16 var16d, var16s összeadás: var16d = var16d + var16s
ADD24 var24d, var24s összeadás: var24d = var24d + var24s
ADD32 var32d, var32s összeadás: var32d = var32d + var32s
ADDC8 var8d, const összeadás: var8d = var8d + const
ADDC16 var16d, const összeadás: var16d = var16d + const
SUB8 var8d, var8s kivonás: var8d = var8d - var8s
SUB16 var16d, var16s kivonás: var16d = var16d - var16s
SUB24 var24d, var24s kivonás: var24d = var24d - var24s
SUB32 var32d, var32s kivonás: var32d = var32d - var32s
SUBC8 var8d, const kivonás: var8d = var8d - const
SUBC16 var16d, const kivonás: var16d = var16d - const
CMP8 var8d, var8s var8d és var8s előjel nélküli számok összehasonlitása, utanna a Jx makrokkal lehet elágazni
CMP16 var16d, var16s var16d és var16s előjel nélküli számok összehasonlitása, utanna a Jx makrokkal lehet elágazni
CMP24 var24d, var24s var24d és var24s előjel nélküli számok összehasonlitása, utanna a Jx makrokkal lehet elágazni
CMP32 var32d, var32s var32d és var32s előjel nélküli számok összehasonlitása, utanna a Jx makrokkal lehet elágazni
CMPC8 var8, const var8 és const előjel nélküli számok összehasonlitása, utanna a Jx makrokkal lehet elágazni
CMPC16 var16, const var16 és const előjel nélküli számok összehasonlitása, utanna a Jx makrokkal lehet elágazni
CMPC24 var24, const var24 és const előjel nélküli számok összehasonlitása, utanna a Jx makrokkal lehet elágazni
CMPC32 var32, const var32 és const előjel nélküli számok összehasonlitása, utanna a Jx makrokkal lehet elágazni
JE label label-re ugrik ha az összehasonlítás eredménye egyenlő (==)
JNE label label-re ugrik ha az összehasonlítás eredménye nem egyenlő (!=)
JB label label-re ugrik ha az összehasonlítás eredménye kisebb (<)
JNB label label-re ugrik ha az összehasonlítás eredménye nem kisebb (>=)
JA label label-re ugrik ha az összehasonlítás eredménye nagyobb (>)
JNA label label-re ugrik ha az összehasonlítás eredménye nem nagyobb (<=)
MUL8 8 bites előjel nélküli szorzás: AARG16 = AARG8 * BARG8
MUL16 16 bites előjel nélküli szorzás: AARG32 = AARG16 * BARG16
MUL32 32 bites előjel nélküli szorzás: AARG64 = AARG32 * BARG32
DIV8 8 bites előjel nélküli osztás: AARG8 = AARG8 / BARG8; maradék = REM8
DIV16 16 bites előjel nélküli osztás: AARG16 = AARG16 / BARG16; maradék = REM16
DIV32 32 bites előjel nélküli osztás: AARG32 = AARG32 / BARG32; maradék = REM32
BIN2BCD8 A W-ben lévő 8 bites bináris számot BCD-vé alakít. Az eredmény a AARGB0:AARGB1-ben jobbra igazítva keletkezik.
BIN2BCD8I number A number fileregiszterben lévő 8 bites bináris számot BCD-vé alakít. Az eredmény a AARGB0:AARGB1-ben jobbra igazítva keletkezik.
BIN2BCD16 A BARG16-ban lévő 16 bites bináris számot BCD-vé alakít. Az eredmény a AARGB0:AARGB1:AARGB2-ben jobbra igazítva keletkezik.
BIN2BCD16I number A number fileregiszterben lévő 16 bites bináris számot BCD-vé alakít. Az eredmény a AARGB0:AARGB1:AARGB2-ben jobbra igazítva keletkezik.
BIN2BCD24 A BARG24-ban lévő 24 bites bináris számot BCD-vé alakít. Az eredmény a AARGB0:AARGB1:AARGB2:AARGB3-ban jobbra igazítva keletkezik.
BIN2BCD24I number A number fileregiszterben lévő 24 bites bináris számot BCD-vé alakít. Az eredmény a AARGB0:AARGB1:AARGB2:AARGB3-ben jobbra igazítva keletkezik.
BCD_DEC8 A BARG8-ban lévő 8 bites BCD számot csökkenti 1-el. Alulcsordulás esetén a Z flaget beállítja.
BCD_DEC8I bcd_number A bcd_number-ben lévő 8 bites BCD számot csökkenti 1-el. Alulcsordulás esetén a Z flaget beállítja.
BCD_INC8 A BARG8-ban lévő 8 bites BCD számot növeli 1-el. Túlcsordulás esetén a Z flaget beállítja.
BCD_INC8I bcd_number A bcd_number-ben lévő 8 bites BCD számot növeli 1-el. Túlcsordulás esetén a Z flaget beállítja.