Začneme tým, že si vysvetlíme pojem preudoinštrukcia (našiel som ho v slovníku cudzích slov). Pseudoinštrukcia - poznámky vyjadrené v programe v tvare inštrukcie, ktorá slúži na orientáciu v ňom, alebo určuje parametre jeho prekladu do strojového kódu. K tomuto odbornému vysvetleniu len toľko, že pseudoinštrukcia je vlastne druh makra. Čiže, ak v zdrojovom texte uvediete napr. inštrukciu RCR AX,4 - po preklade ju prekladač nahradí blokom inštrukcií. Pseudoinštrukcie zmenšujú dĺžku zdrojového textu.
PUSH a POP
- tieto pseudoinštrukcie nahradzujú postupnosť inštrukcií PUSH a POP s jednotlivými registrami, ďalej umožňujú uloženie konštanty na zásobník, uloženie a vybratie ďalekého ukazovateľa.1. Syntax: PUSH zoznam_registrov
POP zoznam_registrov
Príklad: PUSH AX BX CX DX
POP DX CX BX AX
2. Syntax: PUSH konštanta
V inštrukčnom súbore procesora 80186 a vyšších je obsiahnutá i inštrukcia uloženia konštanty do zásobníka. V inštrukčnom procesora 8086 však táto inštrukcia chýba. Preto prekladač definuje pri inštrukčnom súbore procesora 8086 pseudoinštrukciu PUSH konštanta, ktorá je pri preklade nahradená postupnosťou legálnych inštrukcií, t.j. inštrukci
í, ktoré sú pre daný procesor vykonateľné.3. Syntax:
PUSH ďaleký_ukazovateľPOP ďaleký_ukazovateľ
Aby mohol programátor uložiť aj vybrať zo zásobníka aj ďaleký ukazovateľ je možné použiť pseudoinštrukcie PUSH a POP ďaleký_ukazovateľ. V 16-bitových procesoroch je veľkosť ďalekého ukazovateľa 4 bajty, ale maximálna veľkosť slova s ktorou pracujú inštrukcie PUSH a POP, je 2 bajty. Preto je pseudoinštrukcia preložená ako postupnosť dvoch inštrukcií PUSH a POP.
CALL
- táto pseudoinštrukcia slúži k jednoduchšiemu volaniu funkcií v assembleri a vo vyšších programovacích jazykoch.Syntax: CALL meno_procedúry [jazyk], argument, argument...
Použitím tejto pseudoinštrukcie sa programátor zbavuje nutnosti poznať volaciu konvenciu jednotlivých jazykov. Jazyk môže byť jeden z nasledujúcich: BASIC, C, CPP, FORTRAN, PASCAL, PROLOG, SYSCALL, alebo NOLANGUAGE. Argumenty sú parametre procedúry, ktoré prekladač podľa zvolenej volacej konvencie umiestni do zásobníka.
RETN, RETF, RETCODE
- tieto pseudoinštrukcie je možné použiť miesto bežnej inštrukcie RET všade tam, kde si prajeme vyjadriť typ inštrukcie (ďaleký/blízky návrat).RETN - generuje vždy blízky návrat, RETF - generuje vždy ďaleký návrat, RETCODE - generuje návrat podľa zvoleného pamäťového modelu.
NEAR pre modely TINY, SMALL, COMPACT a TPASCAL. FAR pre modely MEDIUM, LARGE, HUGE a THUGE.RCL, RCR, ROL, ROR, SHL, SHR, SAL, SAR
- pseudoinštrukcie sú využiteľné iba pre procesory 8086 a 8088. Počet generovaných inštrukcií sa uvádza priamo konštantou. Procesory 8086 a 8088 však dovoľujú ako konštantu použiť iba hodnotu 1. Pri použití pseudoinštrukcií je možné zvoliť i vyššiu hodnotu ako jedna. Prekladač potom inštrukciu generuje n-krát s konštantou 1.Príklad:
RCR AX,4
;Po preklade
RCR AX,1
RCR AX,1
RCR AX,1
RCR AX,1
SETFLAG, MASKFLEG, TESTFLAG, FLIPFLAG
tieto pseudoinštrukcie nahrádzajú bežné logické funkcie a umožňujú výhodnejší preklad do strojového kódu.SETFLAG=OR, MASKFLAG=AND, TESTFLAG=TEST, FLIPFLAG=XOR.
STARTUPCODE a .STARTUP
- direktívy v závislosti na zvolenom pamäťovom modeli a modifikátore vytvárajú úvodný kód, ktorý nastavuje segmentové registre DS a SS a offset zásobníka register SP. Zároveň direktíva vytvára návestie @STARTUP, ktoré sa používa v spojení s direktívou END.Príklad:
.MODEL TINYEXITCODE a .EXIT
- direktívy v závislosti na zvolenom operačnom systéme, vytvárajú kód, ktorý ukončí program.Syntax: EXITCODE [návratový_kód]
.EXIT [návratový_kód]