Professional Documents
Culture Documents
MNAV Instruction Set 8086
MNAV Instruction Set 8086
r8 8-i bitový registr (al, bl, cl, dl, ah, bh, ch, dh)
r16 16-i bitový registr (ax, bx, cx, dx, sp, bp, si, di)
sr segmentový registr (cs, ds, ss, es)
i8 přímý operand (konstanta) 1 B
i16 přímý operand (konstanta) 2 B
m8, m16 přímá adresa
mi8, mi16 indexovaná adresa, bázovaná nebo bázově-indexovaná adresa
mb8, mb16 pouze bázovaná adresa
flags registr příznaků
sdisp cílová adresa v rozsahu [-128 .. +127] byte
sr push cs
m16 push word ptr ds:30h
mi16 push word ptr es:[bx][di]
r8 imul ch
r16 imul cx
m8 imul byte ptr ds:0
m16 imul word ptr ds:0
mi8 imul byte ptr es:[bx+di]
mi16 imul word ptr ss:[bx+6]
DIV op Dělení;
Hodnoty v OF,CF,SF,ZF,OF,PF nedefinovány
Pro 8-mibitový operand: ax/operand
výsledek al=podíl; ah=zbytek
Pro 16-mibitový operand:
dělenec 32 bit uložen v dx (horní b) a ax
výsledek ax=podíl; dx=zbytek
r8 div ch
r16 div cx
m8 div byte ptr ds:0
m16 div word ptr ds:0
mi8 div byte ptr es:[bx+di]
mi16 div word ptr ss:[bx+6]
SAL op1, op2 Aritmetický posuv vlevo buď o 1 bit nebo o počet bitů určený CL
Do CF se uloží naposledy vysunutý bit.
Operand se zprava plní nulami.
OF=1 pokud došlo ke změně nejvyššího bitu.
nastavuje OF,CF,SF,ZF,PF
AF není definován
SAR op1, op2 Aritmetický posuv vpravo buď o 1 bit nebo o počet bitů určený CL
Naposledy vysunutý bit (pův. nejnižší) do CF.
Nejvyšší bit se nemění proto OF=0.
nastavuje OF,CF,SF,ZF,PF
AF není definován
r8, 1 (sal,sar) d1,1
cl (sal,sar) ah,cl
r16, 1 (sal,sar) dx,1
cl (sal,sar) si,cl
m8, 1 (sal,sar) byte ptr cs:0,1
cl (sal,sar) byte ptr ds:8,cl
mi8, 1 (sal,sar) byte ptr [si],1
SHL op1, op2 Logický posuv vlevo buď o 1 bit nebo o počet bitů určený obsahem
CL
Do CF se uloží naposledy vysunutý bit.
Operand se zprava plní nulami.
OF=1 pokud došlo ke změně nejvyššího bitu.
nastavuje OF,CF,SF,ZF,PF
AF není definován
SHR op1, op2 Logický posuv vpravo buď o 1 bit nebo o počet bitů určený
obsahem CL
Naposledy vysunutý bit (pův. nejnižší) do CF.
OF=1 pokud došlo ke změně nejvyššího bitu.
nastavuje OF,CF,SF,ZF,PF
AF není definován
r8, 1 (shl,shr) d1,1
cl (shl,shr) ah,cl
r16, 1 (shl,shr) dx,1
cl (shl,shr) si,cl
m8, 1 (shl,shr) byte ptr cs:0,1
cl (shl,shr) byte ptr ds:8,cl
mi8, 1 (shl,shr) byte ptr [si],1
cl (shl,shr) byte ptr [bx+di],cl
m16, 1 (shl,shr) word ptr ds:2,1
cl (shl,shr) word ptr es:0,cl
mi16, 1 (shl,shr) word ptr [bx+6],1
cl (shl,shr) word ptr [bp+si],cl
ROL op1, op2 Rotace vlevo buď o 1 bit nebo o počet bitů určený obsahem CL
Nejvyšší bit do nejnižšího a do CF
OF=1 pokud došlo ke změně nejvyššího bitu.
ROR op1, op2 Rotace vpravo buď o 1 bit nebo o počet bitů určený obsahem CL
Nejnižší bit do nejvyššího a do CF.
OF=1 pokud došlo ke změně nejvyššího bitu.
r8, 1 (rol,ror) d1,1
cl (rol,ror) ah,cl
r16, 1 (rol,ror) dx,1
cl (rol,ror) si,cl
m8, 1 (rol,ror) byte ptr cs:0,1
cl (rol,ror) byte ptr ds:8,cl
mi8, 1 (rol,ror) byte ptr [si],1
RCL op1, op2 Rotace vlevo přes CF buď o 1 bit nebo o počet bitů určený obsahem
CL
CF do nejnižšího a nejvyšší bit do CF
OF=1 pokud došlo ke změně nejvyššího bitu
RCR op1, op2 Rotace vpravo přes CF buď o 1 bit nebo o počet bitů určený
obsahem CL
CF do nejvyššího a nejnižší bit do CF
OF=1 pokud došlo ke změně nejvyššího bitu
r8, 1 (rcl,rcr) d1,1
cl (rcl,rcr) ah,cl
r16, 1 (rcl,rcr) dx,1
cl (rcl,rcr) si,cl
m8, 1 (rcl,rcr) byte ptr cs:0,1
cl (rcl,rcr) byte ptr ds:8,cl
mi8, 1 (rcl,rcr) byte ptr [si],1
cl (rcl,rcr) byte ptr [bx+di],cl
m16, 1 (rcl,rcr) word ptr ds:2,1
cl (rcl,rcr) word ptr es:0,cl
mi16, 1 (rcl,rcr) word ptr [bx+6],1
cl (rcl,rcr) word ptr [bp+si],cl
segmentu, nepřímo
obsah slova na [bx][si]
do ip, násl.slovo do cs
Jcc cíl Podmíněný skok (pouze v rozsahu -128..+127 B), tedy pouze
sdisp.
Pokud je splněna podmínka, provede se skok.
Podmínkou se rozumí stav příznaků.
Podmínka je zakódovaná v názvu instrukce (některé mají i více
názvů).
JA, JNBE >, not(≤) (ja, jnbe) návěští CF=0 a ZF=0, unsigned
JAE, JNB, JNC ≥, not(<) (jae, jnb, jnc) návěští CF=0, unsigned
JB, JNAE, JC <, not(≥) (jb, jnae, jc) návěští CF=1, unsigned
≤, not(>) (jbe, jna) návěští CF=1 nebo ZF=1,
JBE, JNA
unsigned
JE, JZ = (je, jz) návěští ZF=1
JNE, JNZ ≠ (jne, jnz) návěští ZF=0
JG, JNLE >, not(≤) (jg, jnle) návěští OF=SF a ZF=0, signed
JGE, JNL ≥, not(<) (jge, jnl) návěští OF=SF, signed
JL, JNGE <, not(≥) (jl, jnge) návěští OF≠SF, signed
≤, not(>) (jle, jng) návěští OF≠SF nebo ZF=1,
JLE, JNG
signed
JS záporné js návěští SF=1, signed
JNS nezáporné jns návěští SF=0, signed
JPO, JNP lichá parita (jpo, jnp) návěští PF=0
JPE, JP sudá parita (jpe, jp) návěští PF=1
JNO nebyl pom. přenos jno návěští OF=0
JO byl pom. přenos jo návěští OF=1
JCXZ cx=0 jcxz návěští
loop sdisp
LOOPE, cíl Cyklus dokud není rovno nebo není vyčerpán počet opakování.
LOOPZ Od cx se odečte 1 a pokud je nový obsah cx nenulový a ZF=1,
provede se skok na zadané návěští
Rozsah -128 .. +127 B
(loope, loopz) sdisp
LOOPNE, cíl Cyklus dokud je rovno nebo není vyčerpán počet opakování.
LOOPNZ Od cx se odečte 1 a pokud je nový obsah cx nenulový a ZF=0,
provede se skok na zadané návěští
Rozsah -128 .. +127 B
(loopne, loopne) sdisp
CLD - Nulování DF
STC - Nastavení CF na 1
STD - Nastavení DF na 1
CMC - Negace CF