Az utasításkészlet részletes magyarázata.


Az utasításkészlet leírásánál alkalmazott jelölések:
:=  Legyen egyenlő.
Akkumulátor
data 8 bites adat (byte).
data 16 16 bites adat (2 byte).
1. byte Az utasítás első byte-ja.
2. byte Az utasítás második byte-ja.
3. byte Az utasítás harmadik byte-ja.
port Az I/O port 8 bites címe.
r, r1, r2 Az A, B, C, D, E, H, L regiszterek egyike.
DDD, SSS A regiszterek kijelölése az utasítás bitkombinációjában.
rp Regiszterpár jelölése.
RP A regiszterpár kijelölése az utasítás bitkombinációjában.
rh A kijelölt regiszterpár magasabb helyiértékű byte-ja.
rl A kijelölt regiszterpár alacsonyabb helyiértékű byte-ja.
PC Utasításszámláló 16 bites (2byte).
PCH A PC (program counter) regiszter magasabb helyiértékű byte-ja.
PCL A PC regiszter alacsonyabb helyiértékű byte-ja.
SP Veremtár (stackpointer) 16 bites (2byte).
ri Az r regiszter i-edik bitje ahol, i=0 legalacsonyabb helyiértékű bit, i=7 legmagasabb helyiértékű bit.
Y, S, P, CY, AC Jelzőbitek (flag-ek).
(r) Valamely tároló tartalma.
+ Összeadás.
- Kettes komplemens kóddal elvégzett kivonás.
Valamely tároló tartalmának logikai negálása.
:=:  Csere.
XYH Hexadecimális szám, ahol X és Z hexadecimális számjegyek.

 
Regiszterek kijelölése  
az utasításkódban.
 Regiszterpárok kijelölése 
az utasításkódban.
DDD vagy SSS
regiszter
RP
regiszterpár
111
A
00
B-C
000 B 01 D-E
001
C
10
H-L
010
D
11
SP
011
E
100
H
101
L

Hardver megszakítási rutin címek:    TRAP---24H            RST7.5---3CH          RST6.5---2CH          RST5.5---34H

Szotver megszakítás címek:              RST0---00H    RST1---08H    RST2---0FH    RST3---1FH    RST4---20H    RST5---28H    RST6---30H    RST7---38H

A megszakítás kiszolgáló alprogram meghívását a memória megadott (xxH) hexa címén kell elhelyezni.


1. Adatmozgató utasítások

MOV r1,r2 (move regiszter)
Az r2 regiszter tartalmát átviszi az r1 regiszterbe.
1. byte: 01DDDSSS
1 ciklus
4 fázisregiszter címzés
flag-eket nem változtatja meg.
MOV r,M (move from memory)
(r):=((H) (L))
Annak a memóriarekesznek a tartalmát, amelynek címét a HL regiszterpár tartalmazza, betölti az r regiszterbe.
1. byte: 01DDD110
2 ciklus
7 fázis
regiszterpáron keresztül indirekt címzés flag-eket nem változtatja meg.

MOV M,r (move to memory)
((H) (L)):=(r)
Az r regiszter tartalmát betölti abba a memóriarekeszbe, melynek címét a HL regiszterpár tartalmazza.
1. byte: 01110SSS
2 ciklus
7 fázis
regiszterpáron keresztül indirekt címzés
flag-eket nem változtatja meg.
MOV r,data (move immediate)
(r):=(2. byte)
Az utasítás második bájtjában közvetlenül megadott adatot betölti az r regiszterbe.
1. byte: 00DDD110
2. byte: data
2 ciklus
7 fázis
közvetlen adat
flag-eket nem változtatja meg.

MOV M,data (move to memory immediate)
((H) (L)):=(2. byte)
Az utasítás második bájtjában megadott adatot betölti abba a memóriarekeszbe, amelynek címét a HL regiszterpár tartalmazza.
1. byte: 00110110=36H
2. byte: data
3 ciklus
10 fázis
közvetlen adat és regiszterpáron keresztül indirekt címzés
flag-eket nem változtatja meg.
 

LXI rp,data (load regiszter pair immediate)
(rh):=(3. byte)
(rl):=(2. byte)
Az utasítás harmadik bájtjában megadott adatot a kijelölt regiszterpár magasabb, a második bájtjában megadott adatot a kijelölt regiszterpár alacsonyabb helyiértékű részbe tölti be.
1. byte: 00RP0001
2. byte: alacsonyabb helyiértékű data
3. byte: magasabb helyiértékű data
3 ciklus
10 fázis
közvetlen regisztercímzés
flag-eket nem változtatja meg.

LXI addr (load accumulator direct)
(A):=((3. byte) (2. byte))
Az utasítás második és harmadik bájtjában egy memóriarekesz címe van megadva. Ennek a memória bájtjának tartalmát az utasítás betölti az akkumulátorba.
1. byte: 00111010=3AH
2. byte: a cím alacsonyabb helyiértékű bájtja
3. byte: a cím magasabb helyiértékű bájtja
4 ciklus
13 fázis
közvetlen adatcímzés
flag-eket nem változtatja meg.
 

STA addr (store accumulator direct)
((3. byte) (2. byte)):=(A)
Az utasítás második és harmadik bájtjában egy memóriarekesz címe van megadva. Az akkumulátor tartalmát az utasítás betölti a kijelölt memória bájtba.
1. byte: 00111010=32H
2. byte: a cím alacsonyabb helyiértékű bájtja
3. byte: a cím magasabb helyiértékű bájtja
4 ciklus
13 fázis
közvetlen adatcímzés
flag-eket nem változtatja meg.
 

LHLD addr (load H and L direct)
(L):=((3. byte) (2. byte))
(H):=((3. byte) (2. byte)+1)
Az utasítás második és harmadik bájtjában egy memóriarekesz címe van megadva. Ennek a memória bájtjának tartalma az L, a következő, egyel magasabb címen lévő memória bájt tartalma a H regiszterbe kerül.
1. byte: 00101010=2AH
2. byte: a cím alacsonyabb helyiértékű bájtja
3. byte: a cím magasabb helyiértékű bájtja
5 ciklus
16 fázis
közvetlen adatcímzés
flag-eket nem változtatja meg.
 

SHLD addr (store H and L direct)
((3. byte) (2. byte)):=(L)
((3. byte) (2. byte)+1):=(H)
Az utasítás második és harmadik bájtjában egy memóriarekesz címe van megadva. Az utasítás ebbe a memória bájtba az L, a következő, egyel magasabb címen lévő memória bájtba a H regiszter tartalmát tölti be.
1. byte: 00100010=22H
2. byte: a cím alacsonyabb helyiértékű bájtja
3. byte: a cím magasabb helyiértékű bájtja
5 ciklus
16 fázis
közvetlen adatcímzés
flag-eket nem változtatja meg.
 

LDAX rp (load accumulator indirect)
(A):=((rp))
Az utasításban kijelölt regiszterpár 16 bites tartalma egy memória bájt címe. Ennek a memória bájtnak a tartalmát az utasítás betölti az akkumulátorba. Csak a BC és a DE regiszterpárt lehet ebben az utasításban kijelölni.
1. byte: 00RP1010
2 ciklus
7 fázis
regiszterpáron keresztüli indirekt címzés
flag-eket nem változtatja meg.
 

STAX rp (store accumulator indirect)
((rp)):=(A)
Az utasításban kijelölt regiszterpár 16 bites tartalma egy memória bájt címét tartalmazza. Az utasítás az akkumulátor tartalmát betölti ebbe a memória rekeszbe. Csak a BC és a DE regiszterpárt lehet ebben az utasításban kijelölni.
1. byte: 00RP0010
2 ciklus
7 fázis
regiszterpáron keresztüli indirekt címzés
flag-eket nem változtatja meg.
 

XCHG (exchange H and L with D and E)
(H):=:(D)
(L):=:(E)
Az utasítás kicseréli a H és L regiszterek tartalmát a D és E regiszterek tartalmával (kölcsönösen).
1. byte: 11101011=EBH
1 ciklus
4 fázis
regiszter címzés
flag-eket nem változtatja meg.
2. Aritmetikai utasítások
A csoporthoz tartozó, kivonási műveletet végző utasítások a kettes komplemens képzésével oldják meg a kivonást. A CY flag “1” értékű lesz, ha van maradék (borrow) a legmagasabb operandus bitről és “0” lesz ha nincs.

ADD r (add register)
(A):=(A)+(r)
Az akkumulátor és az r regiszter tartalmának összegét az utasítás elhelyezi az akkumulátorba.
1. byte: 10000SSS
1 ciklus
4 fázis
regiszter címzés
Z, S, P, CY, AC flag-eket állítja.
 

ADD M (add memory)
(A):=(A)+((H) (L))
A HL regiszterpár tartalma kijelöli egy memória bájtot. Ennek a memóriarekesznek és az akkumulátor tartalmának összegét az utasítás elhelyezi az akkumulátorba.
1. byte: 10000110=86H
2 ciklus
4 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, CY, AC flag-eket állítja.
 

ADI data (add immediate)
(A):=(A)+(2. byte)
Az utasítás második bájtjában megadott 8 bites adat és az akkumulátor tartalmának összegét az akkumulátorba tölti az utasítás.
1. byte: 11000110=C6H
2. byte: data
2 ciklus
7 fázis
közvetlen adat
Z, S, P, CY, AC flag-eket állítja.
 

ADC r (add register with carry)
(A):=(A)+(r)+(CY)
Az utasítás összeadja az akkumulátor, a kijelölt r regiszter, és a CY flag értékét. Az összeg az akkumulátorba kerül.
1. byte: 10001SSS
1 ciklus
4 fázis
regiszter címzés
Z, S, P, CY, AC flag-eket állítja.
 

ADC M (add register with carry)
(A):=(A)+((H) (L))+(CY)
A HL regiszterpár tartalma kijelöli egy memória bájtot. Ennek a memória rekesznek, az akkumulátornak, és a CY flag-nek a tartalmát az utasítás összeadja. Az összeg az akkumulátorba kerül.
1. byte: 10001110=8EH
2 ciklus
7 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, CY, AC flag-eket állítja.
 

ACI data (add immediate with carry)
(A):=(A)+(2. byte)+(CY)
Az utasítás összeadja a második bájtban megadott adatot, az akkumulátor tartalmát és a CY flag-et. Az összeg az akkumulátorba kerül.
1. byte: 11001110=CEH
2. byte: data
2 ciklus
7 fázis
közvetlen adat
Z, S, P, CY, AC flag-eket állítja.
 

SUB r (subtract register)
(A):=(A)-(r)
Az akkumulátor és az r regiszter tartalmának különbsége az akkumulátorba kerül.
1. byte: 10010SSS
1 ciklus
4 fázis
regiszter címzés
Z, S, P, CY, AC flag-eket állítja.
 

SUB M (subtract register)
(A):=(A)-((H) (L))
A HL regiszterpár tartalma kijelöl egy memóriarekeszt. Az utasítás kivonja ezen memória bájt tartalmát az akkumulátor tartalmából és a különbség az akkumulátorba kerül.
1. byte: 10010110=96H
2 ciklus
7 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, CY, AC flag-eket állítja.
 

SUI data (subtract immediate)
(A):=(A)-(2. byte)
Az utasítás kivonja az akkumulátor tartalmából a második bájtjában megadott 8 bites adat. A különbség az akkumulátorba kerül.
1. byte: 11010110=D6H
2. byte: data
2 ciklus
7 fázis
közvetlen adat
Z, S, P, CY, AC flag-eket állítja.
 

SBB r (subtract register with borrow)
(A):=(A)-(r)-(CY)
Az utasításban kijelölt r regiszter tartalmát és a CY flag értékét az utasítás kivonja az akkumulátor tartalmából. A különbség az akkumulátorba kerül.
1. byte: 10011SSS
1 ciklus
4 fázis
regiszter címzés
Z, S, P, CY, AC flag-eket állítja.
 

SBB M (subtract memory with borrow)
(A):=(A)-((H) (L))-(CY)
A HL regiszterpár kijelöl egy memória bájtot, ezen memóriarekesz tartalmát és a CY flag értékét az utasítás kivonja az akkumulátor tartalmából. A különbség az akkumulátorba kerül.
1. byte: 10011110=9EH
2 ciklus
7 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, CY, AC flag-eket állítja.
 

SBB M (subtract immediate with borrow)
(A):=(A)-(2. byte)-(CY)
Az utasítás kivonja a második bájtban megadott adatot és a CY flag értékét az akkumulátor tartalmából. A különbség az akkumulátorba kerül.
1. byte: 11011110=DEH
2. byte: data
2 ciklus
7 fázis
közvetlen adat
Z, S, P, CY, AC flag-eket állítja.
 

INR r (increment register)
(r):=(r)+1
Az r regiszter tartalmát az utasítás eggyel megnöveli. A CY flag értékét az utasítás nem változtatja meg.
1. byte: 00DDD100
1 ciklus
4 fázis
regiszter címzés
Z, S, P, AC flag-eket állítja.
 

INR M (increment memory)
((H) (L)):=((H) (L))+1
Az utasítás eggyel növeli annak a memória rekesznek a tartalmát, amelynek címét a HL regiszterpár tartalmazza. A CY flag értékét az utasítás nem változtatja meg.
1. byte: 00110100=34H
3 ciklus
10 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, AC flag-eket állítja.
 

DCR r (decrement register)
(r):=(r)-1
Az r regiszter tartalmát az utasítás eggyel csökkenti. A CY flag értékét az utasítás nem változtatja meg.
1. byte: 00DDD101
1 ciklus
4 fázis
regisztercímzés
Z, S, P, AC flag-eket állítja.
 

DCR M (decrement memory)
((H) (L)):=((H) (L))-1
Az utasítás eggyel csökkenti annak a memória rekesznek a tartalmát, amelynek címét a HL regiszterpár tartalmazza. A CY flag értékét az utasítás nem változtatja meg.
1. byte: 00110101=35H
3 ciklus
10 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, AC flag-eket állítja.
 

INX rp (increment register pair)
(rh)(rl):=(rh) (rl)+1
Az utasítás a kijelölt regiszterpár tartalmát eggyel megnöveli.
1. byte: 00RP0011
1 ciklus
6 fázis
regisztercímzés
flag-eket nem változtatja meg.
 

DCX rp (decrement register pair)
(rh)(rl):=(rh) (rl)-1
Az utasítás a kijelölt regiszter pár tartalmát eggyel csökkenti.
1. byte: 00RP1011
1 ciklus
6 fázis
regisztercímzés
flag-eket nem változtatja meg.
 

DAD rp (add register pair to H and L)
(H) (L):=(H) (L)+(rh) (rl)
A kijelölt rp regiszterpár tartalmát az utasítás hozzáadja a HL regiszterpár tartalmához. Az eredmény a HL-be kerül. Az utasítás csak a CY flag-et állítja, mely “1” értékű lesz, ha az összeadás a regiszterpár legmagasabb helyiértékű bitjéről átvitelt hozott létre.
1. byte: 00RP1001
3 ciklus
10 fázis
regisztercímzés
CY flag-et állítja.
 

DAA (decimal adjust accumulator)
Az utasítás az akkumulátorban lévő 8 bites számot két, egyenként 4 bites BCD számmá kódolja át.
1. byte: 00100111=27H
1 ciklus
4 fázis
Z, S, P, CY, AC flag-eket állítja.
3. Logikai utasítások
 

ANA r (AND register)
(A):=(A) AND (r)
Az utasítás az akkumulátor és az r regiszter tartalmának logikai ÉS kapcsolatát képezi. Az eredmény az akkumulátorba kerül. Az utasítás törli a CY flag-et (CY=0).
1. byte: 10100SSS
1 ciklus
4 fázis
regiszter címzés
Z, S, P, CY, AC flag-eket állítja.
 

ANA M (AND memory)
(A):=(A) AND ((H) (L))
A HL regiszterpár tartalma kijelöl egy memóriarekeszt. Az utasítás képzi ezen memória bájt és az akkumulátor tartalmának ÉS kapcsolatát. Az eredmény az akkumulátorba kerül. Az utasítás törli a CY flag-et (CY=0).
1. byte: 10100110=A6H
2 ciklus
7 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, CY, AC flag-eket állítja.
 

ANI data (AND immediate)
(A):=(A) AND (2. byte)
Az utasítás képzi az utasítás második bájtjának és az akkumulátor tartalmának ÉS kapcsolatát. Az eredmény az akkumulátorba kerül. Az utasítás törli a CY flag-et (CY=0).
1. byte: 11100110=E6H
2. byte: data
2 ciklus
7 fázis
közvetlen adat
Z, S, P, CY, AC flag-eket állítja.
 

XRA r (exclusive OR register)
(A):=(A) EOR (r)
Az utasítás az akkumulátor és a kijelölt r regiszter tartalmának kizáró VAGY kapcsolatát képezi. Az eredmény az akkumulátorba kerül. Az utasítás törli a CY és az AC flag-et (CY=0, AC=0).
1. byte: 10101SSS
1 ciklus
4 fázis
regiszter címzés
Z, S, P, CY, AC flag-eket állítja.
 

XRA M (exclusive OR memory)
(A):=(A) EOR ((H) (L))
A HL egy memóriarekesz címét tartalmazza. Az utasítás képzi ezen memória bájt és az akkumulátor tartalmának KIZÁRÓ VAGY kapcsolatát. Az eredmény az akkumulátorba kerül. Az utasítás törli a CY és az AC flag-et (CY=0, AC=0).
1. byte: 10101110=AEH
2 ciklus
7 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, CY, AC flag-eket állítja.
 

XRI data (exclusive OR immediate)
(A):=(A) EOR (2. byte)
Az utasítás képzi az utasítás második bájtjában megadott 8 bites adatnak és az akkumulátor tartalmának KIZÁRÓ VAGY kapcsolatát. Az eredmény az akkumulátorba kerül. Az utasítás törli a CY flag-et (CY=0).
1. byte: 11101110=EEH
2. byte: data
2 ciklus
7 fázis
közvetlen adat
Z, S, P, CY, AC flag-eket állítja.
 

ORA r (OR register)
(A):=(A) OR (r)
Az utasítás az akkumulátor és a kijelölt r regiszter tartalmának logikai VAGY kapcsolatát képezi. Az eredmény az akkumulátorba kerül. Az utasítás törli a CY és az AC flag-et (CY=0, AC=0).
1. byte: 10110SSS
1 ciklus
4 fázis
regiszter címzés
Z, S, P, CY, AC flag-eket állítja.
 

ORA M (OR memory)
(A):=(A) OR ((H) (L))
A HL regiszterpár tartalma egy memória bájtot jelöl ki. Az utasítás képzi ezen memória bájt és az akkumulátor tartalmának logikai VAGY kapcsolatát. Az eredmény az akkumulátorba kerül. Az utasítás törli a CY és az AC flag-et (CY=0, AC=0).
1. byte: 10110110=B6H
2 ciklus
7 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, CY, AC flag-eket állítja.
 

ORI data (OR immediate)
(A):=(A) OR (2. byte)
Az utasítás képzi az utasítás második bájtjában megadott 8 bites adat és az akkumulátor tartalmának logikai VAGY kapcsolatát. Az eredmény az akkumulátorba kerül. Az utasítás törli a CY és az AC flag-et (CY=0, AC=0).
1. byte: 11110110=F6H
2. byte: data
2 ciklus
7 fázis
közvetlen adat
Z, S, P, CY, AC flag-eket állítja.
 

CMP r (compare register)
(A)-(r)
Az utasítás elvégzi az utasításban kijelölt r regiszter tartalmának kivonását az akkumulátorban lévő számból (kettes komplemens). Az akkumulátor és az r regiszter tartalma változatlan marad, de a kivonás eredménye állítja a flag-eket.
Z=1 ha (A)=(r)
CY=1 ha az akkumulátor tartalma kisebb az r regiszter tartalmánál.
1. byte: 10111SSS
1 ciklus
4 fázis
regiszter címzés
Z, S, P, CY, AC flag-eket állítja.
 

CMP M (compare memory)
(A)-((H) (L))
A HL regiszterpár tartalma egy memória bájtot jelöl ki. Az utasítás az akkumulátor tartalmából kivonja ezen memóriarekesz tartalmát (kettes komplemens). Az akkumulátor és az memória tartalma változatlan marad, de a kivonás eredménye állítja a flag-eket.
Z=1 ha (A)=((H) (L))
CY=1 ha az akkumulátor tartalma kisebb mint a kijelölt memória bájt tartalma.
1. byte: 10111110=BEH
2 ciklus
7 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, CY, AC flag-eket állítja.
 

CMI data (compare immediate)
(A)-(2. byte)
Az utasítás a 2. bájtban megadott 8 bites számot kivonja az akkumulátor tartalmából. Az akkumulátor tartalma változatlan marad, de a kivonás eredménye állítja a flag-eket.
Z=1 ha (A)=(2. byte)
CY=1 ha az akkumulátor tartalma kisebb az utasítás 2. bájtjában megadott számnál.
1. byte: 11111110=FEH
2. byte: data
2 ciklus
7 fázis
közvetlen adat
Z, S, P, CY, AC flag-eket állítja.
 

RLC (rotate left)
(An+1):=(An);…(A0):=(A7); (CY):=(A7)
Az akkumulátor tartalma egy helyiértékkel (bittel) balra lép. Az akkumulátor legkisebb helyiértékű bitjének értéke (A7) a léptetés előtti értékét veszi fel a CY flag és az akkumulátor legkisebb helyiértékű bitje. A CY flag eredeti értéke elveszik. Az utasítás csak a CY flag-et állítja.
1. byte: 00000111=07H
1 ciklus
4 fázis
CY flag-et állítja.
RRC (rotate right)
(An):=(An+1); (A7):=(A0); (CY):=(A7)
Az akkumulátor tartalma egy helyiértékkel (bittel) jobbra lép. Az akkumulátor legkisebb helyiértékű bitjének értéke (A0) veszi fel a CY flag legnagyobb helyiértékű bit. A CY flag eredeti értéke elveszik. Az utasítás csak a CY flag-et állítja.
1. byte: 00001111=OFH
1 ciklus
4 fázis
CY flag-et állítja.
 

RAL (rotate left through carry)
(An+1):=(An); (CY):=(A7); (A0):=(CY)
Az akkumulátor tartalma a CY flag-en keresztül egy helyiértékkel balra lép. A CY eredeti értékét az akkumulátor legkisebb helyiértékű bitje veszi fel, míg a CY flag-be beíródik az akkumulátor legmagasabb helyiértéken tárolt, léptetés előtti bit. Az utasítás csak a CY flag-et állítja.
1. byte: 00010111=17H
1 ciklus
4 fázis
CY flag-et állítja.
 

RAR (rotate right through carry)
(An):=(An+1); (CY):=(A0); (A7):=(CY)
Az akkumulátor tartalma a CY flag-en keresztül egy helyiértékkel jobbra lép. A legkisebb helyiértékű akkumulátor bit léptetés előtti értéke határozza meg a CY flag értékét, míg a CY flag léptetés előtti értéke beíródik az akkumulátor legfelső helyiértékére. Az utasítás csak a CY flag-et állítja.
1. byte: 00011111=1FH
1 ciklus
4 fázis
CY flag-et állítja.
 

CMA (complement accumulator)
(A):=( )
Az utasítás bitenként komplementálja (negálja) az akkumulátor tartalmát. A flag-ek értéke változatlan.
1. byte: 00101111=2FH
1 ciklus
4 fázis
A flag-ket nem állítja.
 

CMC (complement carry)
(CY):=( )
Az utasítás komplementálja CY flag-et. A többi flag-ek értéke változatlan.
1. byte: 00111111=3FH
1 ciklus
4 fázis
CY flag-et állítja.
 

STC (set carry)
(CY):=1
Az utasítás logikai 1-be állítja a CY flag-et. A többi flag-ek értéke változatlan.
1. byte: 00110111=37H
1 ciklus
4 fázis
CY flag-et állítja.
 

4. Ugró utasítások
Ebbe a csoportba tartozó utasítások a programvégrehajtás menetét befolyásolják.
Az utasítások egyike sem változtatja meg a flag-ek értékét. A feltételes ugrásoknál a
bitkombinációban megadott CCC bitek jelölik ki az ugrási feltételt, a következők szerint.
Feltétel CCC
NZ (nem zérus, Z=0 000
Z (zérus, Z=1) 001
NC (nincs átvitel, CY=0) 010
C (van átvitel, CY=1) 011
PO (páratlan paritás, P=0) 100
PE (páros paritás, P=1) 101
P (pozitív, S=0) 110
M (negativ, S=1) 111
 

JMP addr (jump)
(PC):=(3. byte) (2. byte)
A programvégrehajtás az utasítás 2. és 3. bájtjában megadott című utasításon folytatódik, feltétel vizsgálat és stack művelet nélkül.
1. byte: 11000011=C3H
2. byte: a cím alacsonyabb helyiértékei
3. byte: a cím magasabb helyiértékei
3 ciklus
10 fázis
közvetlen címmegadás
a flag-eket nem változtatja meg.
 

Jcond addr (conditional jump)
Ha (CCC) feltétel fennáll
(PC):=(3. byte) (2. byte)
Ha az utasításban kijelölt feltétel fennáll, akkor a programvégrehajtás az utasítás 2. és 3. bájtjában megadott című utasításon folytatódik, stack művelet nélkül. Egyébként (ha a feltétel nem áll fenn) a következő utasítás végrehajtására kerül sor.
1. byte: 11CCC010
2. byte: a cím alacsonyabb helyiértékei
3. byte: a cím magasabb helyiértékei
2 vagy 3 ciklus
7 vagy 10 fázis
közvetlen címmegadás
a flag-eket nem változtatja meg.
 

CALL addr (call)
((SP)-1):=(PCH)
((SP)-2):=(PCL)
(SP):=((SP)-2)
(PC):=(3. byte) (2. byte)
Feltétel nélküli szubrutinhívás, stack művelettel. A visszatérés címe, amelyet az utasításszámlálóból kell kiolvasni, letárolódik a stack-ben. A PC magasabb helyiértékű bitjei abba a memória bájtba (stack) kerülnek, amelynek a címe egyel kevesebb, mint az SP tartalma, és a PC alacsonyabb helyiértékű bitje abba a memória bájtba (stack) kerülnek, amelynek címe kettővel kevesebb, mint az SP tartalma. Az SP értéke kettővel csökken, tehát az utasítás végrehajtása után annak a memória bájtjának a címét tartalmazza, amelybe a PCL került. Végül az utasításszámlálóba beíródik az utasítás 2. és 3. bájtjában megadott ugrási cím, amely a szubrutin kezdő címe.
1. byte: 11001101=CDH
2. byte: a cím alacsonyabb helyiértékű bitjei
3. byte: a cím magasabb helyiértékű bitjei
5 ciklus
18 fázis
közvetlen (utasítás) címmegadás
regiszterpáron keresztüli indirekt (adat) címzés
a flag-eket nem változtatja meg.

C cond addr (condition call)
Ha a (CCC) feltétel fennáll, akkor
((SP)-1):=(PCH)
((SP)-2):=(PCL)
(SP):=((SP)-2)
(PC):=(3. byte) (2. byte)
Feltételes szubrutinhívás, stack művelettel. Ha az utasításban kijelölt feltétel fennáll, akkor hatása azonos a CALL utasításával (lásd ott). Ha nem, akkor a következő utasítás végrehajtására kerül sor.
1. byte: 11CCC100
2. byte: a cím alacsonyabb helyiértékű bitjei
3. byte: a cím magasabb helyiértékű bitjei
(CCC) fennállása esetén 5, egyébként 2 ciklus
(CCC) fennállása esetén 18, egyébként 9 fázis
közvetlen (utasítás) címmegadás
regiszterpáron keresztüli indirekt (adat) címzés
a flag-eket nem változtatja meg.
 

RET (return)
(PCL):= ((SP))
(PCH):= ((SP)+1)
(SP):=((SP)-2)
Feltétel nélküli, szubrutinból történő visszatérést előíró utasítás, stack művelettel. Annak a memóriarekesznek a tartalma (stack), amelynek a címét az SP tartalmazza az utasításszámláló alacsonyabb, és annak a memóriarekesznek a tartalma (stack), amelynek a címe eggyel nagyobb mint az SP tartalma, az utasításszámláló magasabb helyiértékű bitjeire íródik. A stack pointer értéke kettővel növekszik, tehát a stack következő, még ki nem olvasott adatára mutat.
1. byte: 11001001=C9H
3 ciklus
10 fázis
regiszterpáron keresztüli indirekt címzés
a flag-eket nem változtatja meg.
 

R cond (condition return)
Ha a (CCC) feltétel fennáll, akkor
(PCL):= ((SP))
(PCH):= ((SP)+1)
(SP):=((SP)-2)
Feltételes, szubrutinból történő visszatérést előíró utasítás, stack művelettel. Ha az utasításban megadott CCC feltétel fennáll, akkor hatása azonos a RET utasításéval (lásd ott). Ha nem, akkor a következő utasítás végrehajtásra kerül sor.
1. byte: 11CCC000
(CCC) fennállása esetén 4, egyébként 1 ciklus
(CCC) fennállása esetén 12, egyébként 6 fázis
regiszterpáron keresztüli indirekt címzés
a flag-eket nem változtatja meg.
 

RST n (restart)
Szotver megszakítás címek:              RST0---00H    RST1---08H    RST2---0FH    RST3---1FH    RST4---20H    RST5---28H    RST6---30H    RST7---38H
A megszakítás kiszolgáló alprogram meghívását a memória megadott (xxH) hexa címén kell elhelyezni.

((SP)-1):=(PCH)
((SP)-2):=(PCL)
(SP):=((SP)-2)
(PC):=8. (NNN)
Feltétel nélküli, szubrutinhívó utasítás, stack művelettel. Az utasításban megadott három NNN bit jelöli ki az ugrási címet. A programszámláló magasabb helyiértékei abba a memóriarekeszbe kerülnek, amelynek címe eggyel, a programszámláló alacsonyabb helyiértékei abba a programrekeszbe kerülnek, amelynek a címe kettővel kevesebb, mint az SP tartalma. Az SP tartalma kettővel csökken, tehát az RST végrehajtása után arra a memória bájtra mutat, amelyre a (PCL) került. Az utasítás végrehajtás azon a címen folytatódik, amelynek címe binárisan NNNOOO.

Így a következő címeket lehet kijelölni (decimálisan): 0, 8, 16, 24, 32, 40, 48, 56.
RST végrehajtása után a PC 16 bites tartalma binárisan:
0000 0000 00NN N000
1. byte: 11NNN111
3 ciklus
11 fázis
regiszterpáron keresztüli indirekt (adat) címzés
közvetlen (utasítás) címmegadás
 

PCHL (jump H and L indirect, move H and L to PC)
(PCH):= (H)
(PCL):= (L)
Feltételvizsgálat és stack művelet nélküli ugró utasítás, ahol az ugrási címet a HL regiszterpár tartalmazza. A H regiszterben vannak az ugrási cím magasabb helyiértékei.
1. byte: 11101001=E9H
1 ciklus
6 fázis
regiszter címzés
a flag-eket nem változtatja meg.
 

5. Stack, I/O és a gépi vezérlés utasításai
Push rp (push regiszter pair)
((SP-1):=(rh)
((SP-2):=(rl)
(SP):= (SP)-2
Az utasításban kijelölt regiszterpár tartalma kimentődik a stack-be. A magasabb helyiértékű regiszter tartalma abba a memóriarekeszbe kerül, amelynek címe eggyel, az alacsonyabb helyiértékű regiszter tartalma abba a memóriarekeszbe kerül, amelynek címe kettővel kevesebb a stack pointer által mutatott címnél. Az SP értéke kettővel csökken, tehát a PUSH végrehajtása után arra a címre mutat, ahova az rl került. A stack pointert nem lehet kijelölni kimentésre!
1. byte: 11RP0101
3 ciklus
13 fázis
regiszterpáron keresztüli indirekt címzés
a flag-eket nem állítja.
 

Push PSW (push processzor status word)
((SP)-1):=(A)
((SP)-2)0:=(CY); ((SP)-2)1:=1; ((SP)-2)2:=P
((SP)-2)3:=0; ((SP)-2)4:=AC; ((SP)-2)5:=0
((SP)-2)6:=Z; ((SP)-2):=S
(SP):= (SP)-2
Az akkumulátor tartalmából és a flag-ekből összeállított 2 byte-os processzor státusz szó (PSW) kimentése a stack-be. Az akkumulátor tartalma arra a memória bájtra kerül, amelynek címe eggyel kevesebb az SP által mutatott értéknél. A flag-ekből összeállított bájt (S, Z, O, AC, P, 1, CY, ahol CY kerül a legkisebb helyiértékre) arra a memória bájtra kerül, amelynek a címe kettővel kevesebb az SP által mutatott értéknél. Az SP tartalma kettővel csökken, így a PUSH PSW végrehajtása után arra a memória bájtra mutat, ahová a flag-ekből képzett bájtot írtuk.
1. byte: 11110101=F5H
3 ciklus
12 fázis
regiszterpáron keresztüli indirekt címzés
a flag-eket nem állítja.
 

POP rp (pop regiszter pair)
(rl):=((SP))
(rh):=((SP)+1)
(SP):=(SP)+2
A regiszterpár visszaállítása a stack-ből. Annak a memóriarekesznek tartalma, melynek a címét az SP tartalmazza, az utasításban kijelölt regiszterpár alacsonyabb, a következő eggyel magasabb című rekeszének tartalma a regiszterpár alacsonyabb helyiértékű bájtjába kerül. Az SP értéke kettővel megnövelődik, tehát a POP rp végrehajtása után a következő, még ki nem olvasott memória bájtra (stack) mutat. Az SP-t nem lehet kijelölni visszaállításra.
1. byte: 11RP0001
3 ciklus
10 fázis
regiszterpáron keresztüli indirekt címzés
a flag-eket nem állítja.
 

POP PSW (pop processzor status word)
(CY):=((SP))0; (P):=((SP))2; (AC):=((SP))4
(Z):=((SP))6; (S):=((SP))7;
(A):=((SP)+1)
(SP):= (SP)+2
Az akkumulátor tartalmának és a flag-ek értékének visszaállítása a stack-ből. A flag-ek értékéből képzett és a PUSH PSW-vel letárolt bájt (lásd ott) azon a memóriacímen van elhelyezve, amelynek a címét az SP tartalmazza, a visszaállítás innen történik. Az akkumulátorba az a bájt íródik be, amelynek a címe eggyel nagyobb az SP által mutatott értékénél. Az SP tartalma kettővel megnövelődik, tehát a következő még ki nem olvasott memóriacímre (stack) mutat.
1. byte: 11110001=F1H
3 ciklus
10 fázis
regiszterpáron keresztüli indirekt címzés
Z, S, P, CY, AC flag-eket állítja.
 

XTHL (exchange stack top with H and L)
(L):=:((SP))
(H):=:((SP)+1)
Az L regiszter és az SP által tartalmazott című memória bájt (stack), valamint a H regiszter és annak a memória bájtjának (stack), amelynek címe eggyel magasabb az SP által tartalmazott címnél, kicserélődik. A stack pointer változatlan marad.
1. byte: 11100011=E3H
5 ciklus
16 fázis
regiszterpáron keresztüli indirekt címzés
a flag-eket nem állítja.
 

SPHL (move HL to SP)
(SP):=(H) (L)
A HL regiszterpár 16 bites tartalmát az utasítás betölti a stack pointerbe.
1. byte: 11111001=F9H
1 ciklus
6 fázis
regiszter címzés
a flag-eket nem állítja.
 

IN port (input)
(A):=(data)
Az utasítás 2. bájtja egy 8 bites input port címét (sorszámát) tartalmazza. Az utasítás hatására a kijelölt input portról beolvasott adat az akkumulátorba kerül.
1. byte: 11011011=DBH
2. byte: port (8 bites port cím)
3 ciklus
10 fázis
közvetlen címmegadás
a flag-eket nem állítja.
 

OUT port (output)
(data):=(A)
Az utasítás 2. bájtja egy 8 bites output port címét (sorszámát) tartalmazza. Az utasítás hatására az akkumulátor tartalma kiíródik a kijelölt output portra.
1. byte: 11010011=D3H
2. byte: port (8 bites port cím)
3 ciklus
10 fázis
közvetlen címmegadás
a flag-eket nem állítja.
 

EI (enable interrupt)
Az utasítás végrehajtása után a CPU megszakítási rendszere engedélyezett állapotba kerül (INTE=1). Az első INTR vagy RSTi.5 elfogadása az EI utáni első utasítás után lehetséges.
1. byte: 11111011=FBH
1 ciklus
4 fázis
a flag-eket nem állítja.
 

DI (disable interrupt)
A DI utasítás végrehajtása után közvetlenül, a CPU megszakításkéréseket nem fogad el (INTE=0). Engedélyezett állapot EI hatására jön létre.
1. byte: 11110011=F3H
1 ciklus
4 fázis
a flag-eket nem állítja.
 

HLT (halt)
A CPU a HALT utasítás hatására megáll, HALT állapotba kerül. A regiszterek és a flag-ek tartalma nem változik meg.
1. byte: 01110110=76H
1 ciklus
5 fázis
a flag-eket nem állítja.
 

NOP (no operation)
A NOP utasítás hatására nincs változás a memória, a portok, vagy a CPU-ba lévő tárolók állapotába. Az utasítás végrehajtás a következő (NOP utáni) utasításon folytatódik.
1. byte: 00000000=00H
1 ciklus
4 fázis
a flag-eket nem állítja.
 

SIM (set interrupt mask)
(RST 5.5 maszk):=(A)0, ha (A)3=1
(RST 6.5 maszk):=(A)1, ha (A)3=1
(RST 7.5 maszk):=(A)2, ha (A)3=1
(A)3= maszk beállítás (A2, A1, A0) engedélyezés
(A)4= RST 7.5 megszakítás törlése
(A)6= soros kimenet (SOD) beállítás engedélyezése
SOD=(A)7, ha (A)6=1
A SIM többcélú utasítás, amely a végrehajtás előtt az akkumulátorban létrehozott adat alapján maszkolhatja az RST megszakítás-bemeneteket, és beállíthatja a soros kimenetet.

Az RST 5.5, RST 6.5, RST 7.5 megszakítás-bemeneteket le lehet maszkolni, ha az (A)3=1. és a megfelelő akkumulátor bit 0. (A)3=0 akkor a maszkbitek értéke közömbös. Az (A)4 biten külön törölni lehet az élre érzékeny RST 7.5-höz tartozó belső flip-flopot (ez megszünteti a megszakításkérést). A 8085-ös SOD jelű soros kimenete felveszi az (S)7 bit értékét, ha (A)6=1, egyébként változatlan marad.
1. byte: 00110000=30H
1 ciklus
4 fázis
a flag-eket nem állítja.
 

RIM (read interrupt mask)
(A)0:=RST 5.5 maszk
(A)1:=RST 6.5 maszk
(A)2:=RST 7.5 maszk
(A)3:=INTE
(A)4:=RST 5.5
(A)5:=RST 6.5
(A)6:=RST 7.5
(A)7:=SID
A RIM utasítás létrehozza az akkumulátorban a 8085 megszakítási rendszerére és a soros bemenetének állapotára vonatkozó bájtot. Az állapotszó tartalmazza az RST bemenetek állapotára és maszkjaira vonatkozó adatokat, valamint a megszakításkérés elfogadásának általános engedélyezettségét (INTE). A legelső biten a soros bemenet (SID) aktuális értéke jelenik meg.
1. byte: 00100000=20H
1 ciklus
4 fázis
a flag-eket nem állítja.