Inštrukčná sada

    Príkazy assembleru sa všeobecne označujú ako inštrukcie. Každá má svoj význam (dosť logické), mnemoniku, alebo ak chcete, zápis (môže byť bez parametrov alebo s jedným, dvoma, troma, parametre musia byť navzájom kompatibilné, tzn. bajt - bajt, slovo - slovo) a číselný kód, ktorý nás však zaujímať nemusí. Mnohé inštrukcie majú i výstup, ktorý zväčša ponechajú v nejakom registri, alebo využijú register príznakov (alebo oboje).

    Najčastejšie sú parametrom inštrukcie register alebo pamäťová bunka. Tú možno návestím definovať mimo vykonávanej časti programu jej menom a obsahom, najčastejšie sa používa direktíva DB na definovanie bajtového prístupu alebo DW na definovanie dvojbajtového prístupu. Príklady:

premenna DB 1
text_prm DB "Toto je text uložený bajt po bajte od tejto pozície",2,5,"A"
prem001  dw 2,27,32768,-32768

    Pristupuje sa k nej potom cez výraz [premenna] na získanie alebo zmenu jej hodnoty alebo premenna na získanie jej adresy.

Inštrukcie presunu

    Inštrukcie presunu slúžia na napĺňanie registrov číslami, výmenu údajov medzi registrami či výmenu údajov medzi registrami a pamäťou.

MOV: možno najdôležitejší príkaz. Vo všeobecnosti slúži na uloženie hodnoty do registra. Má dva parametre - cieľ prenosu a zdroj. Napríklad MOV CX,AX presunie obsah AX do registra CX.
    Inštrukcia neovplyvňuje register príznakov, má dva parametre, môžu to byť registre alebo pamäťové zložky. Druhý parameter môže byť tiež číslo. Príklady:

MOV AH,CL
MOV DX,[prem001]
MOV AL,[text_prm]
MOV BH,27

STOS: slúži na jednoduchý zápis údajov do pamäte. Inštrukcia STOSB - store string - byte (STOSW - store string - word) zapíše bajt (slovo) na adresu DI segmentu ES, teda ES:DI. Potom zvýši tento ukazovateľ o jeden (dva) bajty.
    Inštrukcia neovplyvňuje register príznakov. Ak pred ním použijeme prefix REP, vykoná sa inštrukcia toľkokrát, aké číslo je v CX. Príklady:

STOSB
REP STOSW

Aritmetické inštrukcie

    Aritmetické inštrukcie pripomínajú základné operácie známe z matematiky ako sčítanie, odčítanie, násobenie, delenie. Je tu však niečo navyše - porovnanie.
    Pretečenie (alebo podtečenie ako špeciálny prípad pretečenia) nastáva vtedy, ak sa výsledok nezmestí do pamäťovej bunky preň určenej, napr. pri sčítaní bajtov 150 a 150 by bol výsledok 300, keďže sa však ten do bajtu nezmestí, nastane pretečenie (indikované príznakom Carry) a namiesto správneho výsledku prečítame 44 (=300-256). Obdobné platí pri odčítaní.

ADD: je sčítanie. Má dva parametre - obidva sčítance. Výsledok sa uloží na miesto určené prvým parametrom.
    Inštrukcia ovplyvňuje príznaky ZF (ak je výsledok nula) a CF (ak nastane pretečenie). Príklady:

ADD AL,AH
ADD [prem001],44
ADD DX,[prem001]
ADD BH,27

SUB: je odčítanie. Má dva parametre, menšenca a menšiteľa. Výsledok sa uloží do menšenca.
    Inštrukcia ovplyvňuje príznaky ZF (ak je výsledok nula) a CF (ak nastane pretečenie). Príklady:

SUB BX,CX
SUB [prem001],44
SUB AL,0FFh
SUB CX,01011000b

MUL: je násobenie. Vynásobí register AL (alebo AX, ak je parameter nie bajt, ale slovo) zadaným registrom alebo pamäťovou bunkou a výsledok uloží do AX (alebo do DX vyššiu časť výsledku, do AX tak nižšiu). Násobenie prebieha s číslami bez znamienka.
    Inštrukcia ovplyvňuje príznak CF (ak je vyššia polka výsledku nenulová), má jeden parameter. Príklady:

MUL CL
MUL BX
MUL [DI]
MUL [premenna]

DIV: je delenie. Vydelí register AX (alebo DX ako vyššia časť a AX ako časť nižšia, ak je parameter nie bajt, ale slovo) zadaným registrom alebo pamäťovou bunkou, výsledok uloží do AL (alebo do AX) a zvyšok po delení do registra AH (DX). Delenie prebieha s číslami bez znamienka.
    Inštrukcia neovplyvňuje register príznakov, má jeden nenulový parameter. Príklady:

DIV CH
DIV AX
DIV [prem001]

CMP: je porovnanie. Porovná obsah prvého parametru s obsahom druhého. Ak je prvý väčší (ide o čísla bez znamienka), sú ZF aj CF vynulované, ak sú rovné, je ZF=1 a CF=0 a ak je druhý väčší, je CF=1 a ZF=0.
    Inštrukcia nastaví príznaky, ako keby nastalo odčítanie, bez toho, aby zmenilo obsah jedného z parametrov. Má dva parametre. Príklady:

CMP AL,DH
CMP AX,CX
CMP [premenna],BH

Logické inštrukcie

    Logické inštrukcie slúžia na prácu s údajmi ako skutočnými fyzickými údajmi, nie ako s číslami.

AND: je logický súčin bitov. To znamená, že pre každú dvojicu bitov obsahu oboch parametrov sa vykoná konjunkcia (teda obidva bity musia byť nastavené, aby bol nastavený i výstup, ináč je výstupný bit nulový) a výsledok sa uloží na miesto určené prvým parametrom.
    Inštrukcia ovplyvňuje príznak ZF (ak je výsledok nula) a nuluje CF. Príklad:

MOV AH,00110100b
MOV AL,10011101b
AND AL,AH
;AL<-00010100b

OR: je logický súčet bitov. To znamená, že pre každú dvojicu bitov obsahu oboch parametrov sa vykoná disjunkcia (teda obidva bity musia byť nulové, aby bol nulový i výstup, ináč je výstupný bit nastavený) a výsledok sa uloží na miesto určené prvým parametrom.
    Inštrukcia ovplyvňuje príznak ZF (ak je výsledok nula) a nuluje CF. Príklad:

MOV BL,00110100b
MOV CH,10011101b
OR BL,CH
;BL<-10111101b

XOR: je logický exkluzívny súčet bitov. To znamená, že pre každú dvojicu bitov obsahu oboch parametrov sa vykoná alternatíva (teda obidva bity musia byť rôzne, aby bol nastavený i výstup, ak sú rovnaké, je výstupný bit nulový) a výsledok sa uloží na miesto určené prvým parametrom.
    Inštrukcia ovplyvňuje príznak ZF (ak je výsledok nula) a nuluje CF. Príklad:

MOV DH,00110100b
MOV CLL,10011101b
XOR DH,CL
;DH<-10101001b

Inštrukcie skokov

    Inštrukcie skokov slúžia na vetvenie programu a usmerňovanie jeho chodu. Delia sa na nepodmienené (JMP) a podmienené (JC, JNC, JZ, JNZ), ktoré nám konečne umožnia testovať stavový register.

JMP: je nepodmienený skok. Má len jeden parameter - návestie. Po jeho vykonaní program pokračuje od tohto návestia.
    Inštrukcia neovplyvňuje register príznakov. Má jeden parameter - cieľ skoku. Príklad:

JMP pokrac1
........
pokrac1: MOV AH,20h
;až odtiaľto sa znova začne vykonávať program

JC: je podmienený skok. Má len jeden parameter - návestie. Po jeho vykonaní, v prípade že CF=1, program pokračuje od tohto návestia.
    Inštrukcia neovplyvňuje register príznakov. Má jeden parameter - cieľ skoku. Príklad:

JC pokrac2
........
pokrac2: MOV AH,20h
;iba ak bolo CF=0, vykonal sa program označený bodkami

JNC: je podmienený skok. Má len jeden parameter - návestie. Po jeho vykonaní, v prípade že CF=0, program pokračuje od tohto návestia.
    Inštrukcia neovplyvňuje register príznakov. Má jeden parameter - cieľ skoku. Príklad:

JNC pokrac3
........
pokrac3: MOV AH,20h
;iba ak bolo CF=1, vykonal sa program označený bodkami

JZ: je podmienený skok. Má len jeden parameter - návestie. Po jeho vykonaní, v prípade že ZF=1, program pokračuje od tohto návestia.
    Inštrukcia neovplyvňuje register príznakov. Má jeden parameter - cieľ skoku. Príklad:

JZ pokrac4
........
pokrac4: MOV AH,20h
;iba ak bolo ZF=0, vykonal sa program označený bodkami

JNZ: je podmienený skok. Má len jeden parameter - návestie. Po jeho vykonaní, v prípade že ZF=0, program pokračuje od tohto návestia.
    Inštrukcia neovplyvňuje register príznakov. Má jeden parameter - cieľ skoku. Príklad:

JNZ pokrac5
........
pokrac5: MOV AH,20h
;iba ak bolo ZF=1, vykonal sa program označený bodkami

    No, dúfam, že ste nezomreli od nudy... Zďaleka to však nie sú všetky inštrukcie, no nám budú tieto stačiť. Ak sa v príkladoch objaví niečo nové, bude to vysvetlené na mieste.