| <= | => |
| Inštrukcie presunu dát |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| MOV ciel, zdr | ciel:=zdr | r,r r,m m,r m,i r,i sr,r16 sr,m16 r16,sr m16,sr |
--------- |
| PUSH zdr | na vrchol zásobníka ulož obsah zdroja | r16 sr m16 i |
--------- |
| PUSHF | na vrchol zásobníka ulož obsah F | --------- | |
| PUSHA | do zásobníka ulož AX,CX,DX,BX,SP,BP,SI,DI | --------- | |
| POP ciel | z vrcholu zásobníku umiestni do cieľa | r16 sr m16 |
--------- |
| POPF | slovom z vrcholu zásobníka vyplň F | +++++++++ | |
| POPA | zo zásobníka obnov registre uložené PUSHA | --------- | |
| LAHF | AH:=nižšia slabika F | --------- | |
| SAHF | nižšia slabika F:=AH | ----+++++ | |
| XCHG ciel, zdr | vzájomná výmena hodnôt zdroja a cieľa | AX,r16
m,r r,r |
--------- |
| XLAT | AL:=BYTE PTR DS:[BX+AL] | --------- | |
| IN ciel, zdr | do cieľa presuň hodnotu z portu zdr | a,i8 a,DX |
--------- |
| OUT ciel, zdr | na cieľový port presuň hodnotu zdroja | i8,a DX,a |
--------- |
| Inštrukcie dosadenia adresy |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| LEA ciel, zdr | do adr. registru dosaď adresu offset pamäte | ofr,m | --------- |
| LDS ciel, zdr | do registrov DS a adr. reg. dosaď obsah ukazovat. | ofr,m32 | --------- |
| LES ciel, zdr | do registrov ES a adr. reg. dosaď obsah ukazovat. | ofr,m32 | --------- |
| Inštrukcie aritmetických operácií |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| ADD ciel, zdr | ciel:=ciel+zdr | r,r r,m m,r r,i m,i |
+---+++++ |
| ADC ciel, zdr | ciel:=ciel+zdr+CF | r,r r,m m,r r,i m,i |
+---+++++ |
| INC ciel | ciel:=ciel+1 | r m |
+---+++++ |
| AAA | AL7,6,5,4:=0; AL3,2,1,0:=BCD číslo z AL (+) | x---xx+x+ | |
| DAA | AL:=2 BCD číslice z AL (BCD korekcia po +) | x---+++++ | |
| SUB ciel, zdr | ciel:=ciel-zdr | r,r r,m m,r r,i m,i |
+---+++++ |
| CMP ciel, zdr | F:=ciel-zdr | r,r r,m m,r r,i m,i |
+---+++++ |
| SBB ciel, zdr | ciel:=ciel-zdr-CF | r,r r,m m,r r,i m,i |
+---+++++ |
| DEC ciel | ciel:=ciel-1 | r m |
+---+++++ |
| NEG ciel | ciel:=(-1)*ciel | r m |
+---++++1 |
| AAS | AL7,6,5,4:=0; AL3,2,1,0:=BCD číslo z AL (-) | x---xx+x+ | |
| DAS | AL:=2 BCD číslice z AL (BCD korekcia po -) | x---+++++ | |
| MUL zdr | AX:=AL*zdr (* bez znamienka) DX:AX:=AX*zdr (* bez znamienka) | r8 m8 r16 m16 |
+---xxxx+ |
| IMUL zdr IMUL ciel,zdr IMUL ciel,z1,z2 |
AX:=AL*zdr (* so znamienkom) DX:AX:=AX*zdr (* so znamienkom) ciel:=ciel*zdr (* so znamienkom) ciel:=z1*z2 (* so znamienkom) |
r8 m8 r16 m16 r16,i8 r16,r16,i r16,m16,i |
+---xxxx+ |
| AAM | AX:=2 BCD číslice z AX (BCD korekcia po *) | x---++x+x | |
| DIV zdr | AL:=AX div zdr; AH:=AX mod zdr (/ bez znamienka) AX:=DX:AX div zdr; DX:=DX:AX mod zdr (/ bez znamienka) |
r8 m8 r16 m16 |
x---xxxxx |
| IDIV zdr | AL:=AX div zdr; AH:=AX mod zdr (/ so znamienkom) AX:=DX:AX div zdr; DX:=DX:AX mod zdr (/ so znamienkom) |
r8 m8 r16 m16 |
x---xxxxx |
| AAD | AX:=bin číslo z 2 BCD číslic v AX (pred / ) | x---++x+x | |
| CBW | AX:=AL so zachovaním znam. (slabika->slovo) | --------- | |
| CWD | DX:AX:=AX so zachovaním znamienka (slovo->dvojslovo) | --------- |
| Inštrukcie logických operácií |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| NOT ciel | ciel:=not(ciel) | r m |
--------- |
| AND ciel, zdr | ciel:=ciel and zdr (logický súčin) | r,r r,m m,r r,i m,i |
0---++x+0 |
| TEST ciel, zdr | F:=ciel and zdr (logický súčin bez zmeny operandov) | r,r r,m m,r r,i m,i |
0---++x+0 |
| OR ciel, zdr | ciel:=ciel or zdr (logický súčet) | r,r r,m m,r r,i m,i |
0---++x+0 |
| XOR ciel, zdr | ciel:=ciel xor zdr (logický vylučovací súčet) | r,r r,m m,r r,i m,i |
0---++x+0 |
| Inštrukcie posuvov a rotácií |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| SAL ciel, zdr SHL ciel, zdr |
osembitový alebo šestnásťbitový posuv doľava | r,1 m,1 r,CL m,CL r,i m,i |
+-------+ |
| SAR ciel, zdr | osembitový alebo šestnásťbitový aritm. posuv doprava | r,1 m,1 r,CL m,CL r,i m,i |
+-------+ |
| SHR ciel, zdr | osembitový alebo šestnásťbitový posuv doprava | r,1 m,1 r,CL m,CL r,i m,i |
+-------+ |
| ROL ciel, zdr | osembitová alebo šestnásťbitová rotácia doľava | r,1 m,1 r,CL m,CL r,i m,i |
+-------+ |
| RCL ciel, zdr | osembitová alebo šestnásťbitová rotácia doľava cez CF | r,1 m,1 r,CL m,CL r,i m,i |
+-------+ |
| ROR ciel, zdr | osembitová alebo šestnásťbitová rotácia doprava | r,1 m,1 r,CL m,CL r,i m,i |
+-------+ |
| RCR ciel, zdr | osembitová alebo šestnásťbitová rotácia doprava cez CF | r,1 m,1 r,CL m,CL r,i m,i |
+-------+ |
| Inštrukcie volaní, skokov a návratov |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| CALL ciel | nepodm. volanie podprogramu (ciel=jm. podpgm) | adresa | --------- |
| RET | návrat z podprogramu | --------- | |
| JMP ciel | nepodmienený skok na návestie (ciel=návestie) | adresa | --------- |
| JE ciel JZ ciel |
skok na návestie pri ZF=1 (je rovno/je nula) adresa | adresa adresa |
-----t--- |
| JNE ciel JNZ ciel |
skok na návestie pri ZF=0 (nieje rovno/nieje nula) | adresa adresa |
-----t--- |
| JC ciel JB ciel JNAE ciel |
skok na návestie pri CF=1 (je prenos/je niže/nieje nad ani rovno) | adresa adresa adresa |
--------t |
| JNC ciel JAE ciel JNB ciel |
skok na návestie pri CF=0 (nieje prenos/je nad alebo rovno/nieje niže) | adresa adresa adresa |
--------t |
| JS ciel | skok na návestie pri SF=1 (je -) | adresa | ----t---- |
| JNS ciel | skok na návestie pri SF=0 (nieje -) | adresa | ----t---- |
| JO ciel | skok na návestie pri OF=1 (je pretečenie) | adresa | t-------- |
| JNO ciel | skok na návestie pri OF=0 (nieje pretečenie) | adresa | t-------- |
| JP ciel JPE ciel |
skok na návestie pri PF=1 (je parita/je párna parita) | adresa adresa |
-------t- |
| JNP ciel JPO ciel |
skok na návestie pri PF=0 (nieje parita/nepárna parita) | adresa adresa |
-------t- |
| JA ciel JNBE ciel |
skok na návestie pri (CF=0) AND (ZF=0) (je nad/nieje pod ani rovno) | adresa adresa |
-----t—t |
| JBE ciel JNA ciel |
skok na návestie pri (CF=1) OR (ZF=1) (je niže alebo rovno/nieje nad) | adresa adresa |
-----t—t |
| JG ciel JNLE ciel |
skok na návestie pri (ZF=0) OR (SF=OF) (je väčší/nieje menší ani rovno) | adresa adresa |
t---tt--- |
| JGE ciel JNL ciel |
skok na návestie pri SF=OF (je väčší alebo rovno/nieje menší) | adresa adresa |
t---t---- |
| JL ciel JNGE ciel |
skok na návestie pri SF<>OF (je menší/nieje väčší ani rovno) | adresa adresa |
t---t---- |
| JLE ciel JNG ciel |
skok na návestie pri (ZF=1) OR (SF<>OF) (je menší alebo rovno/nieje väčší) | adresa adresa |
t---tt--- |
| JCXZ ciel | skok na návestie pri CX=0 (obídi slučku) | adresa | --------- |
| LOOP ciel | CX:=CX-1; skok na návestie pri CX<>0 | adresa | -----t--- |
| LOOPE ciel LOOPZ ciel |
CX:=CX-1; skok pri (CX<>0 AND ZF=1) (opakuj dokiaľ je zhoda/opakuj dokiaľ je 0) | adresa adresa |
-----t--- |
| LOOPNE ciel LOOPNZ ciel |
CX:=CX-1; skok pri (CX<>0 AND ZF=0) (opakuj dokiaľ nieje zhoda/ 0) | adresa adresa |
-----t--- |
| INT číslo | volej obsluhu prerušenia číslo (0..255) | i8 | --------- |
| INTO | volej INT 4 (obsluha pretečenia) | t-------- | |
| IRET | návrat z obsluhy prerušenia | +++++++++ |
| Inštrukcie reťazcových operácií |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| MOVSB | ES:[DI]:=BYTE PTR DS:[SI]; SI:=SI+(-)1; DI:=DI+(-)1 | --------- | |
| MOVSW | ES:[DI]:=WORD PTR DS:[SI]; SI:=SI+(-)2; DI:=DI+(-)2 | --------- | |
| CMPSB | F:=BYTE PTR DS:[SI]-ES:[DI]; SI,DI:=SI,DI+(-)1 | +---+++++ | |
| CMPSW | F:=WORD PTR DS:[SI]-ES:[DI]; SI,DI:=SI,DI+(-)2 | +---+++++ | |
| SCASB | F:=AL-BYTE PTR ES:[DI]; DI:=DI+(-)1 | +---+++++ | |
| SCASW | F:=AX-WORD PTR ES:[DI]; DI:=DI+(-)2 | +---+++++ | |
| LODSB | AL:=BYTE PTR DS:[SI]; SI:=SI+(-)1 | --------- | |
| LODSW | AX:=WORD PTR DS:[SI]; SI:=SI+(-)2 | --------- | |
| STOSB | BYTE PTR ES:[DI]:=AL; DI:=DI+(-)1 | --------- | |
| STOSW | WORD PTR ES:[DI]:=AX; DI:=DI+(-)2 | --------- | |
| INSB | BYTE PTR ES:[DI]:=port s adresou v DX; DI:=DI+(-)1 | --------- | |
| INSW | WORD PTR ES:[DI]:=port s adresou v DX; DI:=DI+(-)2 | --------- | |
| OUTSB | port s adresou v DX:=BYTE PTR DS:[SI]; SI:=SI+(-)1 | --------- | |
| OUTSW | port s adresou v DX:=WORD PTR DS:[SI]; SI:=SI+(-)2 | --------- |
| Inštrukcie opakovania a preskočenia |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| REP inštr. | CX:=CX-1; opakuj dokiaľ CX<>0 (MOVS a STOS) | reťaz.i. | xxxxxxxxx |
| REPE inštr. REPZ inštr. |
CX:=CX-1; opakuj dokiaľ (CX<>0 AND ZF=1) opakovanie do zhody (CMPS a SCAS) | reťaz.i. | xxxxxxxxx |
| REPNE inštr. REPNZ inštr. |
CX:=CX-1; opakuj dokiaľ (CX<>0 AND ZF=0) opakovanie dokiaľ nieje zhoda (CMPS a SCAS) | reťaz.i. | xxxxxxxxx |
| SEGCS inštr. | adresa v inštrukcii sa vzťahuje k CS | pam.inš. | xxxxxxxxx |
| SEGDS inštr. | adresa v inštrukcii sa vzťahuje k DS | pam.inš. | xxxxxxxxx |
| SEGES inštr. | adresa v inštrukcii sa vzťahuje k ES | pam.inš. | xxxxxxxxx |
| SEGSS inštr. | adresa v inštrukcii sa vzťahuje k SS | pam.inš. | xxxxxxxxx |
| Inštrukcie riadenia |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| CLC | CF:=0 | --------0 | |
| CMC | CF:=NOT(CF) | --------+ | |
| STC | CF:=1 | --------1 | |
| CLD | DF:=0 | -0------- | |
| STD | DF:=1 | -1------- | |
| CLI | IF:=0 | --0------ | |
| STI | IF:=1 | --1------ | |
| HLT | zastaviť procesor (do res. nebo nem. preruš.) | --------- | |
| WAIT | zastaviť procesor (do res. nebo nem. preruš.) | --------- | |
| ESC inšt, zdr | predaj koprocesoru inštrukciu s operandom | inšt,r/m | --------- |
| LOCK inšt | po dobu vykonávania inštrukcie blokuj zbernice | --------- | |
| NOP | tri periódy hodín čakaj | --------- |
| Nedokumentované inštrukcie |
top |
| Inštrukcie | Operácie | Operandy | ODITSZAPC |
|---|---|---|---|
| $D4 zdr | AH:=AL div zdr; AL:=AL mod zdr | i8 | ????????? |
| $D5 zdr | AL:=(AH*zdr)+AL; AH:=0 | i8 | ????????? |
| $D6 | if CF=0 then AL:=0 else AL:=$FF | ????????? |
| Symboly a operátory vkladaného assembleru |
top |
| BYTE | označenie pre slabiku |
| WORD | označenie pre slovo |
| DWORD | označenie pre dvojslovo |
| QWORD | označenie pre 8 slabík |
| TBYTE | označenie pre 10 slabík |
| NEAR | označenie blízke adresy |
| FAR | označenie vzdialené adresy |
| OFFSET | vracia adresu ofsetu z výrazu uvedeného za operátorom |
| SEG | vracia adresu segmentu z výrazu uvedeného za operátorom |
| TYPE | vracia veľkosť v slabikách výrazu za operátorom |
| PTR | odkaz do pamäte daný výrazom za operátorom, typ určí výraz pred operátorom |
| Vysvetlivky pre tabuľku inštrukčného súboru |
top |
| r (r8, r16) | register(osembitový, šestnásťbitový) |
| sr | segmentový register (DS, ES, CS,...) |
| ofr | ofsetový register (BX, BP, DI, SI,...) |
| m (m8, m16, m32) | miesto v pamäti (o danom počte bitov) |
| i (i8, i16) | hodnota (o danom počte bitov) |
| ciel | označenie cieľového miesta (podľa povolených operandov) |
| zdr | označenie zdrojového miesta (podľa povolených operandov) |
| O, D, I, T, S, Z, A, P, C | bity registra príznakov |
| + | nastavujú sa pri inštrukcii |
| - | nenastavujú sa pri inštrukcii |
| x | nedefinovaná hodnota |
| t | testujú sa pri inštrukcii |
| a | register AX (nebo AH) |
| <= | => |