Tervezési segédlet a Z80 (MK3880) típusú mikroprocesszor alkalmazásához
VIII. rész: CPU utasításkészlet
Ezen tervezési segédlet
része annak a Z-80-as sorozatnak, amely a - "uP-k alkalmazása" c. témafigyelésünk 1981/4- és 1982/1.,2-3. sz. kérdőívein történő felmérés alapján - katalógus-hiánnyal küzdő kollégák részére készült. A felhasználók további kérésére a sorozat egy részletes CPU utasításkészlettel bővült (Forrás: Zilog - 1982.május).
A Z-80-as sorozatunk így az alábbi részekből áll:
I. rész: |
CPU |
II-III. rész: |
PIO, CTC |
IV. rész: |
SIO |
V. rész: |
COMBO |
VI. rész: |
DMA, Óra / RAM, VCU, A/D konverter |
VII. rész: |
Alkalmazástechnikai példatár |
VIII. rész: |
CPU utasításkészlet |
Bevezetés
A kézikönyv a Z80 CPU teljes utasításkészletének részletes ismertetését tartalmazza.
Az egyes utasításokat a műveleti kód, funkció, az assembler mnemonikus formátum és a műveleti kód (OP kód) leírásával ismertetjük. Az utasítások funkciójának ismertetését az utasítás végrehajtási idejének, M ciklusainak, T órajel-periódusainak és a jelzőbit (flag) regiszter érintett bitjeinek megadásával is szemléltetjük. Amennyiben a jelzőbit regiszter állapotát az utasítás nem befolyásolja, úgy ezt a leírásban külön nem tüntettük fel . Végül az utasítás működését egy példán keresztül illusztráljuk.
Gépi kód, mnemonikus kód
A Z80-ban az utasítások 1-4 bájt hosszúak. Ez tartalmazza egyrészt a művelet kódját, másrészt vagy közvetlenül magát az operandust, vagy annak kódját vagy címét. Az operandus kódok 2-3 bitesek, és a művelet kódjával együtt egy bájtban vannak. A közvetlen operandusok az utasítás utolsó egy vagy két bájtját alkotják. Ha az utasítás címet tartalmaz, akkor az is a címzés módjától függően egy vagy két bájtot foglal el. Szerepel a Z80-ban még négy egy bájtos ún. előkód is, amely az ezt követő bájtok dekódolását módosítja. Ezek hexadecimálisan a következők: CB, DD, ED, FD.
A mnemonikus gépi kód két részből áll:
Az operandusok a következők lehetnek:
Regiszter vagy regiszterpár esetén a művelet operandusa ezek tartalma, vagy a művelet eredménye kerül ide. Szám esetén ez maga a művelet operandusa. A zárójeles kifejezéseknél a műveletben résztvevő operandus nem a regiszter ill. regiszterpár tartalma, vagy a szám vagy az indexregiszter tartalma és a szám összege, hanem ez cím, amely megmutatja, hogy az operandus a memóriában vagy az I/O kapuk között hol található. A feltételkódok a feltételes ugró utasítások operandusai.
Az egy bájtra vonatkozó műveletek operandus kódjai binárisan:
000 B 001 C 010 D 011 E 100 H 101 L 110 (HL) 111 A
A két bájtra vonatkozó műveletek operandus kódjai binárisan:
00 BC 01 DE 10 HL 11 AF a verem műveleteknél és
SP egyébként
A feltételkódok binárisan
000 NZ nem zérus a Z bit 0 001 Z zérus a Z bit 1 010 NC nincs átvitel a C bit 0 011 C van átvitel a C bit 1 100 PO páratlan paritás a P/V bit 0 101 PE páros paritás a P/V bit 1 110 P nem negatív az N bit 0 111 M negatív az N bit 1
A Z80 a két bájtos adatokat úgy tekinti, hogy a kisebb címen van az alacsonyabb helyiértékű bájt és a következőn a magasabb, és a kisebb cím egyben az adat címe is.
Az előkódok módosítják az őket követő utasításkódok dekódolását. A CB és az ED után teljesen eltér a dekódolás az eredetitől, míg DD és FD esetén a következőképpen történik. Ezek olyan utasítások előkódjai lehetnek, amelyek tartalmazzák a HL vagy (HL) operandust. DD után a HL szerepét az IX regiszter a (HL) szerepét az (IX+d) kifejezés veszi át. Itt d az ún. relatív cím, amely egy előjeles egy bájtos adat és az IX regiszter tartalmával összeadva határozza meg a memória címet. A d mindig a DD előkódot követő második bájt. Az eredeti utasítás kódjai szükség esetén egy bájttal hátrább csúsznak. Az FD előkód szerepe hasonló, csak az IX regiszter helyett az IY regiszter szerepel. A DD és FD a CB előkódú utasítás előkódjaként is szerepelhet. Az előkóddal rendelkező utasítások első két gépi ciklusa M1 ciklus, így két memória frissítés esik egy utasításra. A kettős előkódú utasításoknál az eredeti utasításkód beolvasása már csak közönséges memóriaolvasó gépi ciklusban történik, tehát itt is csak két M1 ciklus van.
Megjegyzés:
A végrehajtási idő (továbbiakban: V.i.) minden egyes utasítás esetén 4 MHz-es CPU órajel frekvenciát feltételezve ms-ban értelmezendő.
Az utasítás végrehajtásához szükséges gépi ciklusok (M) számát a teljes órajel-periódussal (T állapot) együtt adjuk meg. Emellett az egyes M gépi ciklusokon belüli T órajel-periódusok számát is jelezzük. Pl.:
M ciklusok: 2 | T állapotok: 7 (4,3) | 4 MHz V.i.: 1,75 |
Ez úgy értelmezendő, hogy az utasítás két gépi ciklusból áll. Az első gépi ciklus 4 órajel-periódusból (T állapotból) áll, míg a második gépi ciklus 3 órajel-periódust tartalmaz. Így az utasítás összesen 7 órajel-periódus hosszúságú, ezért 1.75 ms végrehajtási időt igényel.
A regiszter-formátumokban minden egyes utasítás esetén a legnagyobb helyértékű a bal szélső bit, míg a legkisebb helyértékű a jobb szélső bit.
ADC HL,ss
Formátum: | OP kód |
Operandusok |
ADC |
HL,ss |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
s |
s |
1 |
0 |
1 |
0 |
Leírás:
Az ss regiszterpár tartalma (a BC, DE, HL vagy SP regiszterpárok bármelyike / az átvitel bittel (Carry Flag) együtt /a C jelzőbit az F regiszterben) hozzáadódik a HL regiszterpár tartalmához, és az eredmény a HL regiszterbe kerül. Az ss operandus az assemblerrel fordított tárgykódban a következő:
Regiszterpár |
ss |
BC |
00 |
DE |
01 |
HL |
10 |
SP |
11 |
M ciklusok: 4 | T állapotok: 15 (4,4,4,3) | 4 MHz V.i.: 3,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha a 11-es biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 15-ös biten átvitel keletkezik; egyébként törlődik |
Példa:
Ha a BC regiszterpár 2222H-t, a HL regiszterpár 5437H-t tartalmaz, és az átvitel bit 1-be van állítva, az
ADC HL,BC
végrehajtása után a HL tartalma 765AH lesz.
Formátum: | OP kód |
Operandusok |
ADC |
A,s |
Az s operandus r, n, (HL),(IX+d) vagy (IY+d) bármelyike lehet, ahogy ez az ADD utasításnál is szerepel. A különböző OP kód-operandus kombinációk a tárgykódban a következők lehetnek:
ADC A,r | 1 |
0 |
0 |
0 |
1 |
< |
r |
> |
|
ADC A,n | 1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
CE |
< |
- |
- |
n |
- |
- |
- |
> |
||
ADC A,(HL) | 1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
8E |
ADC A,(IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
8E | |
< |
- |
- |
d |
- |
- |
- |
> |
||
ADC A,(IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
8E | |
< |
- |
- |
d |
- |
- |
- |
> |
az r a B,C,D,E,H,L vagy A regisztereket a fenti tárgykódban a következőképpen azonosítja:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az s operandus az átvitel bittel együtt (C bit az F regiszterben) hozzáadódik az akkumulátor tartalmához és az eredmény az akkumulátorban kerül tárolásra.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
ADC A,r | 1 |
4 | 1,00 |
ADC A,n | 2 |
7 (4, 3) | 1,75 |
ADC A,(HL) | 2 |
7 (4, 3) | 1,75 |
ADC A,(IX+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
ADC A,(IY+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 7-es biten átvitel keletkezik; egyébként törlődik |
Példa:
Abban az esetben, ha az akkumulátor 16H-t tartalmaz, az átvitel bit 1-es állapotban van, a HL regiszterpár 6666H-t és a 6666H című memóriarekesz 10H-t tartalmaz, az
ADC A,(HL)
végrehajtása után az akkumulátor tartalma 27H lesz.
Formátum: | OP kód |
Operandusok |
ADD |
A,n |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
C6 |
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az n egész szám hozzáadódik az akkumulátor tartalmához és az eredmény az akkumulátorban kerül tárolásra.
M ciklusok: 2 | T állapotok: 7 (4,3) | 4 MHz V.i.: 1,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 7-es biten átvitel keletkezik; egyébként törlődik |
Példa:
Ha az akkumulátor tartalma 23H, az
ADD A,33H
végrehajtásának eredményeként az akkumulátor tartalma 56H lesz.
Formátum: | OP kód |
Operandusok |
ADD |
A,r |
1 |
0 |
0 |
0 |
0 |
< |
r |
> |
Leírás:
Az r regiszter tartalma hozzáadódik az akkumulátor tartalmához, és az eredmény az akkumulátorban tárolódik. Az r szimbólum a tárgykódban a kódolt A,B,C,D,E,H vagy L regisztereket azonosítja:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 7-es biten átvitel keletkezik; egyébként törlődik |
Példa:
Ha az akkumulátor tartalma 44H és a C regiszteré 11H, az
ADD A,C
végrehajtásának eredményeként az akkumulátor tartalma 55H lesz.
Formátum: | OP kód |
Operandusok |
ADD |
A,(HL) |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
86 |
Leírás:
A HL regiszterpár által tartalmazott memóriacímen lévő byte hozzáadódik az akkumulátor tartalmához és az eredmény az akkumulátorban tárolódik.
M ciklusok: 2 | T állapotok: 7 (4,3) | 4 MHz V.i.: 1,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 7-es biten átvitel keletkezik; egyébként törlődik |
Példa:
Ha az akkumulátor tartalma A0H, a HL regiszterpár tartalma 2323H, és a 2323H című memóriarekeszben lévő byte 08H, az
ADD A,(HL)
végrehajtásának eredményeként az akkumulátor tartalma A8H lesz.
Formátum: | OP kód |
Operandusok |
ADD |
A,(IX+d) |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
86 |
< |
- |
- |
d |
- |
- |
- |
> |
Leírás:
Az index regiszter (IX regiszterpár) tartalma hozzáadódik a d eltolási címhez. Az így kapott eredmény egy memóriacímre mutat, melynek tartalma hozzáadódik az akkumulátor tartalmához és az eredmény az akkumulátorban kerül tárolásra.
M ciklusok: 5 | T állapotok: 19 (4, 4, 3, 5, 3) | 4 MHz V.i.: 4,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba, kerül, ha a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 7-es biten átvitel keletkezik; egyébként törlődik |
Példa:
Ha az akkumulátor tartalma 11H, az IX index regiszter tartalma 1000H, és az 1005H című memóriarekesz tartalma 22H, az
ADD A,(IX+5H)
végrehajtásának eredményeként az akkumulátor tartalma 33H lesz.
Formátum: | OP kód |
Operandusok |
ADD |
A,(IY+d) |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
86 |
< |
- |
- |
d |
- |
- |
- |
> |
Leírás:
Az index regiszter (IY regiszterpár) tartalma hozzáadódik a d eltolási címhez. Az így kapott eredmény egy memóriacímre mutat, melynek a tartalma hozzáadódik az akkumulátor tartalmához, és az eredmény az akkumulátorban kerül tárolásra.
M ciklusok: 5 | T állapotok: 19 (4, 4, 3, 5, 3) | 4 MHz V.i.: 4,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba, kerül, ha a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 7-es biten átvitel keletkezik; egyébként törlődik |
Példa:
Ha az akkumulátor tartalma 11H, az IY index regiszterpár tartalma 1000H, és az 1005H című memóriarekesz tartalma 22H, az
ADD A,(IY+5H)
végrehajtásának eredményeként az akkumulátor tartalma 33H lesz.
Formátum: | OP kód |
Operandusok |
ADD |
HL,ss |
0 |
0 |
s |
s |
1 |
0 |
0 |
1 |
Leírás:
Az ss regiszterpár (a BC, DE, HL vagy SP regiszterpárok bármelyike) tartalma hozzáadódik a HL regiszterpár tartalmához, és az eredmény a HL regiszterbe kerül. Az ss operandus jelentése:
Regiszterpár |
ss |
BC |
00 |
DE |
01 |
HL |
10 |
SP |
11 |
M ciklusok: 3 | T állapotok: 11 (4, 4, 3) | 4 MHz V.i.: 2,75 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
1-es állapotba kerül, ha a 11-es biten átvitel keletkezik; egyébként törlődik |
P/V: |
változatlan marad |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 15-ös biten átvitel keletkezik; egyébként törlődik |
Példa:
Ha a HL regiszterpár tartalmazza a 4242H egész számot és a DE regiszterpár 1111H-t, az
ADD HL,DE
végrehajtása után a HL regiszterpár tartalma 5353H lesz.
Formátum: | OP kód |
Operandusok |
ADD |
IX,pp |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
0 |
p |
p |
1 |
0 |
0 |
1 |
Leírás:
A pp regiszterpár (a BC, DE, IX vagy SP regiszterpárok bármelyike) tartalma hozzáadódik az IX index regiszter tartalmához, és az eredmény az IX regiszterbe kerül. A pp operandus a következőket jelenti:
Regiszterpár |
pp |
BC |
00 |
DE |
01 |
IX |
10 |
SP |
11 |
M ciklusok: 3 | T állapotok: 15 (4, 4, 4, 3) | 4 MHz V.i.: 3,75 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
1-es állapotba kerül, ha a 11-es biten átvitel keletkezik; egyébként törlődik |
P/V: |
változatlan marad |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 15-ös biten átvitel keletkezik; egyébként törlődik |
Példa:
Ha az IX index regiszter tartalma 3333H és a BC regiszterpár tartalma 5555H, az
ADD IX,BC
végrehajtásának eredményeként az IX tartalma 8888H lesz.
Formátum: | OP kód |
Operandusok |
ADD |
IY,rr |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
0 |
r |
r |
1 |
0 |
0 |
1 |
Leírás:
Az rr regiszterpár (a BC, DE, IY vagy SP regiszterpárok bármelyike) tartalma hozzáadódik az IY index regiszter tartalmához, és az eredmény az IY regiszterbe kerül. Az rr operandus jelentése a következő:
Regiszterpár |
rr |
BC |
00 |
DE |
01 |
IY |
10 |
SP |
11 |
M ciklusok: 4 | T állapotok: 15 (4, 4, 4, 3) | 4 MHz V.i.: 3,75 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
1-es állapotba kerül, ha a 11-es biten átvitel keletkezik; egyébként törlődik |
P/V: |
változatlan marad |
N: |
törlődik |
C: |
1-es állapotba kerül, ha a 15-ös biten átvitel keletkezik; egyébként törlődik |
Példa:
Ha ez IY index regiszter tartalma 3333H és a BC regiszterpár tartalma 5555H, az
ADD IY,BC
végrehajtása után az IY tartalma 8888H lesz.
Formátum: | OP kód |
Operandusok |
AND |
s |
Az s operandus az r, n, (HL), (IX+d) vagy (IY+d)bármelyike, amint azt az ezzel az utasítással analóg ADD utasításoknál meghatároztuk. Ezek a különböző lehetséges OP kód-operandus kombinációk a tárgykádban a következők lehetnek:
AND r | 1 |
0 |
1 |
0 |
0 |
< |
r |
> |
|
AND n | 1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
E6 |
< |
- |
- |
n |
- |
- |
- |
> |
||
AND (HL) | 1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
A6 |
AND (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
A6 | |
< |
- |
- |
d |
- |
- |
- |
> |
||
AND (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
A6 | |
< |
- |
- |
d |
- |
- |
- |
> |
r B, C, D, E, H, L vagy A regisztereket azonosítja az alábbiak szerint:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Olyan bitenkénti logikai ÉS művelet, amely az s operandus által meghatározott byte, és az akkumulátor által tartalmazott byte között valósul meg. Az eredmény az akkumulátorban tárolódik.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
AND r | 1 |
4 | 1,00 |
AND n | 2 |
7 (4, 3) | 1,75 |
AND (HL) | 2 |
7 (4, 3) | 1,75 |
AND (IX+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
AND (IY+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha, az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik N: törlődik |
N: |
törlődik |
C: |
törlődik |
Példa:
Ha a B regiszter 7BH-t (01111011), és az akkumulátor C3H-t (11000011) tartalmaz, az
AND B
végrehajtásának eredményeként az akkumulátor tartalma 43H (01000011) lesz.
Formátum: | OP kód |
Operandusok |
BIT |
b,(HL) |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
1 |
< |
b |
> |
1 |
1 |
0 |
Leírás:
Ennek az utasításnak a végrehajtása után a jelzőbit regiszterben lévő Z bit a HL regiszterpár tartalma által megcímzett memóriarekeszen belül a b operandus által kijelölt bit komplemensét tartalmazza. A b operandus jelentése:
Vonatkozó bit |
b |
0 |
000 |
1 |
001 |
2 |
010 |
3 |
011 |
4 |
100 |
5 |
101 |
6 |
110 |
7 |
111 |
M ciklusok: 3 | T állapotok: 12 (4, 4, 4) | 4 MHz V.i.: 3,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül, ha, a specifikált bit 0; egyébként törlődik |
H: |
1-es állapotba kerül |
P/V: |
ismeretlen |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a HL regiszterpár 4444H-t, és a 4-es bit a 4444H című memóriarekeszben 1-et tartalmaz, a
BIT 4,(HL)
végrehajtásának eredményeként a Z bit 0-t, a 4-es bit pedig a. 4444H című memória rekeszben változatlanul 1-et fog tartalmazni.
Formátum: | OP kód |
Operandusok |
BIT |
b,(IX+d) |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
< |
- |
- |
d |
- |
- |
- |
> |
|
0 |
1 |
< |
b |
> |
1 |
1 |
0 |
Leírás:
Ennek az utasításnak a végrehajtása után a Z bit tartalmazni fogja az IX regiszterpár (IX index regiszter) és a d 2-es komplemensű egész számként értelmezett címkiegészítés összege által meghatározott memóriarekesz azon bitjének negáltját, melyet a b operandus jelöl ki. A b operandus jelentése:
Vonatkozó bit |
b |
0 |
000 |
1 |
001 |
2 |
010 |
3 |
011 |
4 |
100 |
5 |
101 |
6 |
110 |
7 |
111 |
M ciklusok: 5 | T állapotok: 20 (4, 4, 3, 5, 4) | 4 MHz V.i.: 5,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül, ha a b operandus által specifikált bit 0; egyébként törlődik |
H: |
1-es állapotba kerül |
P/V: |
ismeretlen |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha az IX index regiszter 2000H-t tartalmaz, és a 6-os bit a 2004H című memóriarekeszben 1-et tartalmaz, a
BIT 6,(IX+4H)
végrehajtásának eredményeként a Z bit 0-t fog tartalmazni, a 2004H című memóriarekeszben a 6-os bit pedig változatlanul 1-et.
Formátum: | OP kód |
Operandusok |
BIT |
b,(IY+d) |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
< |
- |
- |
d |
- |
- |
- |
> |
|
0 |
1 |
< |
b |
> |
1 |
1 |
0 |
Leírás:
Ennek az utasításnak a végrehajtása után a Z bit tartalmazni fogja az IY regiszterpár (IY index regiszter) és a d 2-es komplemensű egész számként értelmezett címkiegészítés összege által meghatározott memóriarekesz azon bitjének negáltját, melyet a b operandus jelöl ki. A b operandus jelentése:
Vonatkozó bit |
b |
0 |
000 |
1 |
001 |
2 |
010 |
3 |
011 |
4 |
100 |
5 |
101 |
6 |
110 |
7 |
111 |
M ciklusok: 5 | T állapotok: 20 (4, 4, 3, 5, 4) | 4 MHz V.i.: 5,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül, ha a b operandus által specifikált bit 0; egyébként törlődik |
H: |
1-es állapotba kerül |
P/V: |
ismeretlen |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha az IY index regiszter tartalma 2000H, és a 6-os bit a 2004H című memóriarekeszben 1-et tartalmaz, a
BIT 6,(IY+4H)
végrehajtásénak eredményeként a Z bit változatlanul 0-t, a 6-os bit a 2004H című memóriarekeszben továbbra is 1-et tartalmaz.
Formátum: | OP kód |
Operandusok |
BIT |
b,r |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
1 |
< |
b |
> |
< |
r |
> |
Leírás:
Az utasítás az r operandus által meghatározott regiszternek a b operandus által kijelölt bitjét invertálva a jelzőbit regiszter Z bitjébe tölti. Az r és b operancusok tárgykódban a következőket jelenthetik:
Vonatkozó bit |
b |
Regiszter |
r |
0 |
000 |
B |
000 |
1 |
001 |
C |
001 |
2 |
010 |
D |
010 |
3 |
011 |
E |
011 |
4 |
100 |
H |
100 |
5 |
101 |
L |
101 |
6 |
110 |
A |
111 |
7 |
111 |
M ciklusok: 2 | T állapotok: 8 (4, 4) | 4 MHz V.i.: 2,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül, ha a b operandus által specifikált bit 0; egyébként törlődik |
H: |
1-es állapotba, kerül |
P/V: |
ismeretlen |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a 2-es bit a B regiszterben 0-t tartalmaz, a
BIT 2,B
végrehajtásának eredményeként a Z bit 1-et fog tartalmazni, a 2-es bit a B regiszterben pedig 0 marad.
Művelet: Ha cc igaz: | (SP-1)PCh |
(SP-2)PCL, PCnn |
Formátum: | OP kód |
Operandusok |
CALL |
cc,nn |
1 |
1 |
< |
cc |
> |
1 |
0 |
0 |
< |
- |
- |
n |
- |
- |
- |
> |
< |
- |
- |
n |
- |
- |
- |
> |
Megjegyzés: A fenti tárgykód két n operandusa közül az első a két byte-os memóriacím alacsonyabb helyiértékű byte-ja.
Leírás:
Ha a, cc feltétel teljesül (logikailag igaz), ez az utasítás tárolja programszámláló (PC) pillanatnyi tartalmát a külső veremtár tetejére, majd az nn operandust tölti a PC-be, és az így kapott PC tartalom által kijelölt memóriarekeszből egy szubrutin első OP kódja kerül kiolvasásra. (A szubrutin végén az eredeti programhoz való visszatérés egy a veremtár tetejét a PC-be visszahelyező RET utasítással biztosítható.) Ha a cc feltétel nem teljesül (hamis), akkor a programszámláló tartalma a szokásosnak megfelelően lesz inkrementálva, és a program végrehajtása a sorrendben következő utasítással folytatódik. A művelet során először a veremtár mutató (SP) pillanatnyi tartalmának l-el való dekrementálása, majd a PC tartalom magasabb helyértékű byte-jának az így kapott címre való kihelyezése történik meg. Ezután az SP ismét dekrementálódik és a PC tartalom alacsonyabb helyértékű byte-ja töltődik az így kapott címre, azaz a veremtár tetejére.
Megjegyzés: Mivel a CALL cc,nn 3 byte-os utasítás, a programszámláló a tárolási művelet végrehajtása előtt már hárommal inkrementálódik. A cc feltétel nyolc olyan állapot valamelyikeként programozott, amely a jelzőbit regiszter (F regiszter) feltételbitjeinek felel meg. Ez a nyolc állapot a következő táblázat szerint definiálható, amely ugyanakkor a tárgykód megfelelő cc bit mezőjét is specifikálja:
cc |
Feltétel |
A vizsgált bit |
|
000 |
NZ | nem zérus | Z |
001 |
Z | zérus |
Z |
010 |
NC | nincs átvitel | C |
011 |
C | átvitel | C |
100 |
PO | páratlan paritás | P/V |
101 |
PE | páros paritás | P/V |
110 |
P | pozitív előjel | S |
111 |
M | negatív előjel | S |
Ha cc teljesül:
M ciklusok: 5 | T állapotok: 17 (4, 3, 4, 3, 3) | 4 MHz V.i.: 4,25 |
Ha cc nem teljesül:
M ciklusok: 3 | T állapotok: 10 (4, 3, 3) | 4 MHz V.i.: 2,50 |
Példa:
Ha a C bit törölt állapotban van, a programszámláló tartalma 1A47H, a veremtár mutatóé 3002H, a memóriarekeszeké pedig az alábbi:
Rekesz |
Tartalom |
1A47H |
D4H |
1A48H |
35H |
1A49H |
21H |
és ha az 1A47H-val kezdődő utasítás hozzáférési szekvencia megkezdődik, akkor a D43521H 3 byte-os utasítás kerül a CPU-hoz végrehajtásra. Ennek a mnemonikus ekvivalense:
CALL NC,2135H
Ennek az utasításnak a végrehajtása után a 3001H című memóriarekesz tartalma 1AH, a 3000H című memóriarekesz tartalma 4AH, a, veremtár mutató (SP) tartalma 3000H, és a programszámláló tartalma 2135H lesz, amely a most végrehajtandó szubrutin első OP kódjának címét jelöli ki.
Formátum: | OP kód |
Operandusok |
CALL |
nn |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CD |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Megjegyzés: A fenti tárgykód két n operandusa közül az első a két byte-os memóriacím alacsonyabb helyértékű byte-ja.
Leírás:
A programszámláló regiszter pillanatnyi tartalmának a külső memória veremtár tetejére történő mentése után az nn operandus töltődik a programszámláló regiszterbe (PC-be), amely így arra a memóriacímre mutat, ahonnan egy szubrutin első OP kódja kerül kiemelésre. (A szubrutin végén az eredeti programhoz való visszatérés egy a veremtár tetejét a PC-be visszahelyező RET utasítással biztosítható.) A mentési művelet során először a veremtár mutató (SP regiszterpár) pillanatnyi tartalmának 1-el való dekrementálása, majd a PC tartalom magasabb helyértékű byte-jának az így kapott címre való kihelyezése történik meg. Ezután az SP ismét dekrementálódik, és a PC tartalom alacsonyabb helyértékű byte-ja töltődik az így kapott címre, azaz a veremtár tetejére.
Megjegyzés: Mivel a CALL nn 3 byte-os utasítás, a programszámláló, a mentési művelet végrehajtása előtt már 3-mal inkrementálódik.
M ciklusok: 5 | T állapotok: 17 (4, 3, 4, 3, 3) | 4 MHz V.i.: 4,2 |
Példa:
Abban az esetben, ha a programszámláló tartalma 1A47H, a veremtár mutatóé 3002H, a memóriarekeszeké pedig a következők szerint alakul:
Rekesz |
Tartalom |
1A47H |
CDH |
1A48H |
35H |
1A49H |
21H |
és ha az 1A47H-val kezdődő utasítás hozzáférési szekvencia megkezdődik, akkor a CD3521H 3 byte-os utasítás kerül a CPU-hoz végrehajtásra. Ennek mnemonikus ekvivalense:
CALL 2135H
Ennek az utasításnak a végrehajtása után a 3001H memóriacím tartalma 1AH, a 3000H című memóriarekesz tartalma 4AH, az SP veremtár mutató (stack pointer) tartalma 3000H, és a programszámláló tartalma 2135H lesz, amely a most végrehajtandó szubrutin első OP kódjának címét jelöli ki.
Formátum: | OP kód |
Operandusok |
CCF |
- |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
3F |
Leírás:
A C bit a jelzőbit regiszterben invertálódik.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
az előző átvitel értékét veszi fel |
P/V: |
változatlan marad |
N: |
törlődik |
C: |
1-es állapotba kerül, ha az utasítás végre hajtását megelőzően az átvitel bit (CY) 0 volt; egyébként törlődik. |
Formátum: | OP kód |
Operandusok |
CP |
s |
Az s operandus r, n, (HL), (IX+d) vagy (IY+d) bármelyike lehet, úgy, mint az ADD utasításoknál. Ezek a különböző lehetséges oP kód-operandus kombinációk a tárgykódban a következők lehetnek:
CP r | 1 |
0 |
1 |
1 |
1 |
< |
r |
> |
|
CP n | 1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
FE |
< |
- |
- |
n |
- |
- |
- |
> |
||
CP (HL) | 1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
BE |
CP (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
BE | |
< |
- |
- |
d |
- |
- |
- |
> |
||
CP (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
BE | |
< |
- |
- |
d |
- |
- |
- |
> |
r a fenti tárgykódban a következőképpen kódolt B, C, D, E, H, L vagy A regisztereket azonosítja:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az s operandus tartalma az akkumulátor tartalmával kerül összehasonlításra. Az összehasonlítás eredményét a jelzőbit regiszter megfelelő bitjének beállítása jelzi.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
CP r | 1 |
4 | 1,00 |
CP n | 2 |
7 (4, 3) | 1,75 |
CP (HL) | 2 |
7 (4, 3) | 1,75 |
CP (IX+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
CP (IY+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
P/V: |
1-es állapotba kerül, he, túlcsordulás áll fenn; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
Példa:
Ha, az akkumulátor 63H-t, a HL regiszterpár 6000H-t, és a 6000H című memóriarekesz 60H-t tartalmaz, a
CP (HL)
utasítás végrehajtásának eredményeként a P/V bit a jelzőbit regiszterben törlődik.
Formátum: | OP kód |
Operandusok |
CPD |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
A9 |
Leírás:
A HL regiszterpár által megcímzett memóriarekesz tartalma az akkumulátor regiszter tartalmával kerül összehasonlításra. Az összehasonlítás eredményekként egy feltétel bit fog 1-es állapotba kerülni. A HL és a byte számláló (BC regiszterpár) tartalma dekrementálódik.
M ciklusok: 4 | T állapotok: 16 (4, 4, 3, 5) | 4 MHz V.i.: 4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha A=(HL) ; egyébként törlődik |
H: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha BC-1<>0; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a MTL regiszterpár 1111H-t, az 1111H című memóriarekesz 3BH-t, az akkumulátor 3BH-t, és a byte számláló 0001H-t tartalmaz, a
CPD
utasítás végrehajtása után a byte számláló 0000H-t, a HL regiszterpár 1110H-t fog tartalmazni, a, Z bit a jelzőbit regiszterben 1-es állapotba kerül, és a P/V bit törlődik. Az utasítás az akkumulátor, vagy az 1111H című memóriarekesz tartalmára nem lesz hatással.
Formátum: | OP kód |
Operandusok |
CPD |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
B9 |
Leírás:
A HL regiszterpár által megcímzett memóriarekesz tartalma az akkumulátor regiszter tartalmával kerül összehasonlításra. Az összehasonlítás eredményeként egy feltétel bit fog 1-es állapotba kerülni. A HL és a BC (Byte számláló) regiszter dekrementálódik. Ha a dekrementálás eredményeként a BC tartalma 0-vá válik, vagy ha A=(HL), az utasítás befejeződik. Ha BC tartalma nem zerus és A<>(HL), a programszámláló 2-vel dekrementálódik, és az utasítás megismétlődik.
Megjegyzés: ha BC tartalma az utasítás végrehajtása előtt már 0-ra van beállítva, az utasítás 64Kbyte-on keresztül fog megismétlődni, feltéve, hogy az egymást követő összehasonlítások során nem történt megegyezés. Minden memóriához fordulást követően két frissítési ciklus (refresh cycle) zajlik le, és ilyenkor a megszakítások (interruptok) is érvényesülnek.
BC<>0 és A<>(HL) esetén:
M ciklusok: 5 | T állapotok: 21 (4, 4, 3, 5, 5) | 4 MHz V.i.: 5,25 |
BC=0 vagy A=(HL) esetén:
M ciklusok: 4 | T állapotok: 16 (4, 4, 3, 5) | 4 MHz V.i.: 4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha A=(HL) ; egyébként törlődik |
H: |
1-es állapotba kerül, ha, alulcsordulás történt; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha BC-1<>0; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a HL regiszterpár 1118H-t, az akkumulátor F3H-t, és a byte számláló 0007H-t tartalmaz, a memóriarekeszek tartalma pedig az alábbiak szerint alakul:
Rekesz |
Tartalom |
1118H |
52H |
1117H |
00H |
1116H |
F3H |
akkor a
CPDR
utasítás végrehajtása után a HL regiszterpár tartalma 1115H, a byte számláló tartalma 0004H lesz, a P/V bit állapotba kerül, és a Z bit is 1-es állapotba kerül.
Formátum: | OP kód |
Operandusok |
CPI |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
A1 |
Leírás:
A HL regiszterpár által megcímzett memóriarekesz tartalma az akkumulátor regiszter tartalmával kerül összehasonlításra. Az összehasonlítás eredményeként egy feltétel bit fog 1-es állapotba kerülni. Azután a HL tartalma inkrementálódik, és a byte számláló (BC regiszterpár) tartalma dekrementálódik.
M ciklusok: 4 | T állapotok: 16 (4, 4, 3, 5) | 4 MHz V.i.: 4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha A=(HL) ; egyébként törlődik |
H: |
1-es állapotba kerül, ha, alulcsordulás történt; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha BC-1<>0; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a HL regiszterpár 1111H-t tartalmaz, az 1111H című memóriarekesz 3BH-t, az akkumulátor 3FBH-t, és a byte számláló 0001H-t, a
CPI
Végrehajtásának eredményeként a, byte számláló 0000H-t, a HL regiszterpár 1112H-t fog tartalmazni, a Z bit 1-es állapotba kerül, és a P/V bit törlődik. Az utasítás az akkumulátor, vagy az 1111H című memóriarekesz tartalmára nem lesz hatással.
Formátum: | OP kód |
Operandusok |
CPIR |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
B1 |
Leírás:
A HL regiszterpár által megcímzett memóriarekesz tartalma az akkumulátor regiszter tartalmával kerül összehasonlításra. Az összehasonlítás eredményeként egy feltétel bit fog 1-es állapotba kerülni. A HL inkrementálódik, és a byte számláló (BC regiszterpár) tartalma dekrementálódik. Ha a dekrementálás eredményeként a BC tartalma 0-vá válik, vagy ha A=(HL), az utasítás befejeződik. Ha BC tartalma nem zérus, és A<>(HL), a programszámláló 2-vel dekrementálódik, és az utasítás megismétlődik. Megjegyezzük, hogy akkor, ha BC tartalma az utasítás végrehajtása előtt már 0-ra van beállítva, az utasítás 64Kbyte-on keresztül fog megismétlődni, feltéve, hogy az egymást követő összehasonlítások során nem történt megegyezés. Minden egyes memóriához fordulást követően két frissítési ciklus zajlik le, és ilyenkor a megszakítások is érvényesülnek.
BC<>0 és A<>(HL) esetén:
M ciklusok: 5 | T állapotok: 21 (4, 4, 3, 5, 5) | 4 MHz V.i.: 5,25 |
BC=0 vagy A=(HL) esetén:
M ciklusok: 4 | T állapotok: 16 (4, 4, 3, 5) | 4 MHz V.i.: 4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha A=(HL) ; egyébként törlődik |
H: |
1-es állapotba kerül, ha, alulcsordulás történt; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha BC-1<>0; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a HL regiszterpár 1111H-t, az akkumulátor F3H-t, a byte számláló 0007H-t tartalmaz, és a memóriarekeszek tartalma az alábbiak szerint alakul:
Rekesz |
Tartalom |
1111H |
52H |
1112H |
00H |
1113H |
F3H |
ekkor a
CPIR
végrehajtásának eredményeként a HL regiszterpár tartalma 1114H, a byte számláló tartalma 0004H lesz, a P/V bit 1-es állapotba kerül, és a Z bit is 1-es állapotba kerül.
Formátum: | OP kód |
Operandusok |
CPL |
- |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
2F |
Leírás:
Az akkumulátor (A regiszter) tartalma invertálódik (1-es komplemens képződik).
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
1-es állapotba kerül |
P/V: |
változatlan marad |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha az akkumulátor tartalma 1011 0100, a
CPL
végrehajtásának eredményeként az akkumulátor tartalma 0100 1011 lesz.
Formátum: | OP kód |
Operandusok |
DAA |
- |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
27 |
Leírás:
Az utasítás BCD összeadáskor és kivonáskor szükségessé váló akkumulátor-tartalom korrekciót végzi. Összeadás (ADD, ADC, INC) vagy kivonás (SUB, SBC, DEC, NEG) esetén az utasítás által megvalósított műveleteket az alábbi táblázat mutatja:
Művelet | C tartalom DAA előtt |
Magasabb helyértékű szám (7-4 bit) HEXA értéke |
H tartalom DAA előtt |
Alacsonyabb helyértékű szám (3-0 bit) HEXA értéke |
Byte-hoz hozzáadott szám |
C tartalom DAA után |
ADD ADC INC |
0 |
0-9 |
0 |
0-9 |
00 |
0 |
0 |
0-8 |
0 |
A-F |
06 |
0 |
|
0 |
0-9 |
1 |
0-3 |
06 |
0 |
|
0 |
A-F |
0 |
0-9 |
60 |
1 |
|
0 |
9-F |
0 |
A-F |
66 |
1 |
|
0 |
A-F |
1 |
0-3 |
66 |
1 |
|
1 |
0-2 |
0 |
0-9 |
60 |
1 |
|
1 |
0-2 |
0 |
A-F |
66 |
1 |
|
1 |
0-3 |
1 |
0-3 |
66 |
1 |
|
SUB | 0 |
0-9 |
0 |
0-9 |
00 |
0 |
SBC | 0 |
0-8 |
1 |
6-F |
FA |
0 |
DEC | 1 |
7-F |
0 |
0-9 |
A0 |
1 |
NEG | 1 |
6-F |
1 |
6-F |
9A |
1 |
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az akkumulátor tartalmának legmagasabb helyértékű bitje 1 a művelet után; egyébként törlődik |
Z: |
1-es állapotba kerül, ha a művelet után az akkumulátor tartalma zérus; egyébként törlődik |
H: |
lásd a táblázatot |
P/V: |
1-es állapotba kerül, ha a művelet után az akkumulátor páros paritású; egyébként törlődik |
N: |
változatlan marad |
C: |
lásd a táblázatot |
Példa:
Ha a 15 (BCD) és 27 (BCD) értékeket kell összeadni, az elemi decimális aritmetika a, következő eredményt adja:
15 |
|
+ | 27 |
42 |
Ha viszont a megfelelő bináris reprezentációk a normál bináris aritmetika szerint kerülnek összeadásra az akkumulátorban, akkor
0001 0101 |
||
+ | 0010 0111 |
|
0011 1100 |
3C |
az eredmény nem egyértelmű. A DAA utasítás ezt az eredményt úgy korrigálja, hogy a helyes BCD reprezentációt kapjuk:
0001 0101 |
||
+ | 0010 0111 |
|
0100 0010 |
42 |
Formátum: | OP kód |
Operandusok |
DEC |
m |
Az m operandus r, (HL) , (IX+d) vagy (IY+d) bármelyike, amint azt az ezzel az utasítással analóg INC utasításoknál meghatároztuk. Ezek a különböző lehetséges 0P kód operandus-kombinációk a tárgykódban a következők:
DEC r | 0 |
0 |
< |
r |
> |
1 |
0 |
1 |
|
DEC (HL) | 0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
35 |
DEC (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
35 | |
< |
- |
- |
d |
- |
- |
- |
> |
||
DEC (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
35 | |
< |
- |
- |
d |
- |
- |
- |
> |
r azonosítja a B,C,D,E,H,L vagy A regisztereket, melyek a következők a fenti tárgykócban:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az m operandus által specifikált byte dekrementálódik.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
DEC r | 1 |
4 | 1,00 |
DEC (HL) | 3 |
11 (4, 4, 3) | 2,75 |
DEC (IX+d) | 6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
DEC (IY+d) | 6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha, az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha a művelet előtt m 80H volt; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a D regiszterben lévő byte 2AH, a
DEC D
végrehajtásának eredményeként a D regiszter tartalma 29H lesz.
Formátum: | OP kód |
Operandusok |
DEC |
IX |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
2B |
Leírás:
Az IX index regiszter tartalma dekrementálódik.
M ciklusok: 2 | T állapotok: 10 (4, 6) | 4 MHz V.i.: 2,50 |
Példa:
Ha az IX index regiszter tartalma 2006H, a
DEC IX
végrehajtásának eredményeként az IX index regiszter tartalma 2005H lesz.
Formátum: | OP kód |
Operandusok |
DEC |
IY |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
2B |
Leírás:
Az IY index regiszter tartalma dekrementálódik.
M ciklusok: 2 | T állapotok: 10 (4, 6) | 4 MHz V.i.: 2,50 |
Példa:
Ha az IY index regiszter tartalma 7649H, a
DEC IY
végrehajtásának eredményeként az IX index regiszter tartalma 7648H lesz.
Formátum: | OP kód |
Operandusok |
DEC |
ss |
0 |
0 |
s |
s |
1 |
0 |
1 |
1 |
Leírás:
Az ss regiszterpár (a BC, DE, HL vagy SP regiszterpárok bármelyike) tartalma dekrementálódik. Az ss operandus tárgykódban a következő:
Regiszterpár |
rr |
BC |
00 |
DE |
01 |
HL |
10 |
SP |
11 |
M ciklusok: 1 | T állapotok: 6 | 4 MHz V.i.: 1,50 |
Példa:
Ha a HL regiszterpár tartalma 1001H, a
DEC HL
végrehajtásának eredményeként a HL tartalma 1000H lesz.
Formátum: | OP kód |
Operandusok |
DI |
- |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
F3 |
Leírás:
A megszakítás engedélyező flip-flopok (IFF1 és IFF2) törlésével a DI tiltja a, maszkolható megszakítások érvényre jutását. Megjegyezzük, hogy az utasítás már végrehajtása alatt tiltja a maszkolható megszakításokat.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
Példa:
Amikor a CPU a
DI
utasítást hajtja végre, a maszkolható megszakítás mindaddig letiltásra kerül, amíg azt egy később végrehajtott EI utasítás újra nem engedélyezi. A CPU tehát a, normál megszakítás kérésre (Interrupt Request - INT) ebben az esetben nem reagál.
Formátum: | OP kód |
Operandusok |
DJNZ |
e |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
10 |
< |
- |
- |
e-2 |
- |
- |
- |
> |
Leírás:
Ez az utasítás a feltételes ugró utasításokhoz hasonló, az eltérés csak az, hogy a vezérlés átadás itt a B regiszter tartalmától függ. A B regiszter tartalma az utasítás végrehajtása során dekrementálódik, és ha értéke zérustól eltérő marad, akkor az e címkiegészítés a programszámláló (PC) tartalmához adódik. Azt a memóriarekeszt, ahonnan a, soron következő utasítás lesz kiemelve, a programszámláló új tartalma határozza meg. Az ugrás hossza az utasítás OP kódját tartalmazó memóriarekesz címétől értendő, és tartománya -126...+129 byte lehet. Az assembler kiszámítja az e címkiegészítés értékét, és ezt automatikusan korrigálja a kétszer inkrementált PC miatt 2-vel. (A PC tartalomnak ez a 2-vel történő növelése az utasítás 2 byte-os hosszának következménye). Ha a B regiszter dekremetálásának az eredménye zérus, akkor a, következő végrehajtandó utasítás a DJNZ-t tartalmazó memóriarekeszt követő rekeszből lesz kiemelve.
Ha B<>0:
M ciklusok: 3 | T állapotok: 13 (5, 3, 5) | 4 MHz V.i.: 3,25 |
Ha B=0:
M ciklusok: 2 | T állapotok: 8 (5, 3) | 4 MHz V.i.: 2,00 |
Példa:
A DJNZ utasítás használatát egy tipikus szoftver rutinon keresztül mutatjuk be. A rutin max. 80 byte-ból álló sort tölt át egy input pufferből (INBUF) egy output pufferbe (OUTBUF). A byte-ok áttöltését mindaddig folytatja, amíg egy CR kódot nem talál, vagy amíg a 80 byte áttöltése be nem fejeződik.
LOOP: KESZ: |
LD B,80 LD HL,INBUF LD DE,OUTBUF LD A,(HL) LD (DE),A CP 0DH JR Z,KESZ INC HL INC DE DJNZ LOOP |
; a számláló előkészítése ; a pointerek előkészítése ; a következő byte megszerzése az input pufferből ; tárolás az output pufferben ; CR volt? ; Igen, vége ; nem, apointer inkrementálás ; visszaugrás, ha még 80 byte ; áttöltése nem történt meg |
Formátum: | OP kód |
Operandusok |
EI |
- |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
FB |
Leírás:
Az EI a maszkolható megszakításokat engedélyezi, azáltal, hogy a megszakítás engedélyező flip-flopokat (IFF1 és IFF2) 1-es állapotba állítja. Megjegyezzük, hogy az utasítás végrehajtása során a maszkolható megszakításokat tiltja.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
Példa:
Ha a CPU befelezte az
EI
utasítás végrehajtását, a maszkolható megszakítás engedélyezett, és a CPU képes a megszpkítás kérelem (Interrupt Request - INT) elfogadására.
Formátum: | OP kód |
Operandusok |
EX |
(SP),HL |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
E3 |
Leírás:
A HL regiszterpárban lévő kisebb helyértékű byte az SP regiszterpár tartalma által meghatározott memóriacímen lévő byte tartalmával cserélődik ki, a HL regiszterpár magasabb helyértékű byte-ja pedig a következő memóriacímen (SP+1) lévő byta-tal cserélődik ki.
M ciklusok: 5 | T állapotok: 19 (4, 3, 4, 3, 5) | 4 MHz V.i.: 4,75 |
Példa:
Ha, a HL regiszterpár 7012H-t, az SP regiszterpár 8856H-t tartalmaz, a 8856H címtű memóriarekeszben lévő byte 11H és a 8857H című memóriarekeszben lévő byte 22H, akkor az
EX (SP) , HL
Utasítás végrehajtásának eredményeként a HL regiszterpár tartalma. 2211H lesz, a 8856H című memóriarekeszben lévő byte 12H, a. 8857H című memóriarekeszben lévő byte 70H lesz, és az SP regiszterpár 8856H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
EX |
(SP),IX |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
E3 |
Leírás:
Az IX index regiszterben lévő kisebb helyértékű byte az SP regiszterpár tartalma által meghatározott memóriacímen lévő byte tartalmával cserélődik ki, az IX regiszterpár magasabb helyértékű byte-ja pedig a következő memóriacímen (SP+1) lévő byta-tal cserélődik ki.
M ciklusok: 6 | T állapotok: 23 (4, 4, 3, 4, 3, 5) | 4 MHz V.i.: 5,75 |
Példa:
Ha az IX index regiszter 3988H-t, az SP regiszterpár 0100H-t tartalmaz, a 0100H című memóriarekeszben lévő byte 90H és a 0101H című memóriarekeszben lévő byte 48H, akkor az
EX (SP),IX
utasítás végrehajtásának eredményeként az IX regiszterpár tartalma számértékben 4890H lesz, a 0100H című memóriarekeszben lévő byte 88H, a 0101H című memóriarekeszben lévő byte 39H lesz, és az SP regiszter 0100H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
EX |
(SP),IY |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
E3 |
Leírás:
Az IY index regiszterben lévő kisebb helyértékű byte az SP regiszterpár tartalma által meghatározott memóriacímen lévő byte tartalmával cserélődik ki, az IY regiszterpár magasabb helyértékű byte-ja pedig a következő memóriacímen (SP+1) lévő byta-tal cserélődik ki.
M ciklusok: 6 | T állapotok: 23 (4, 4, 3, 4, 3, 5) | 4 MHz V.i.: 5,75 |
Példa:
Ha az IY index regiszter 3988H-t, az SP regiszterpár 0100H-t tartalmaz, a 0100H című memóriarekeszben lévő byte 90H és a 0101H című memóriarekeszben lévő byte 48H, akkor az
EX (SP),IY
utasítás végrehajtásának eredményeként az IY regiszterpár tartalma, számértékben 4890H lesz, a 0100H című memóriarekeszben lévő byte 88H, a 0101H című memóriarekeszben lévő byte 39H lesz, és az SP regiszter 0100H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
EX |
AF,AF' |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
08 |
Leírás:
Az AF és AF' 2 byte-os regiszterpárok tartalma felcserélődik. (Megjegyzés: az AF' regiszterpár az A' és F' regiszterekből áll.)
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
Példa:
Ha az AF regiszterpár tartalma számértékben 9900H és az AF' regiszterpár tartalma, számértékben 5944H, az
EX AF,AF'
utasítás végrehajtásának eredményeként az AF tartalma 5944H, és az AF' tartalma 9900H lesz.
Formátum: | OP kód |
Operandusok |
EX |
DE,HL |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
EB |
Leírás:
A DE és HL 2 byte-os regiszterpárok tartalma felcserélődik.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
Példa:
Ha a DE regiszterpár tartalma számértékben 2822H és a HL regiszterpár tartalma számértékben 499AH, akkor az
EX DE,HL
utasítás végrehajtásának eredményeként a DE regiszterpár tartalma 499AH és a HL regiszterpár tartalma 2822H lesz.
Formátum: | OP kód |
Operandusok |
EXX |
- |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
D9 |
Leírás:
A BC, DE és HL regiszterpárokban lévő minden egyes 2 byte-os érték rendre felcserélődik a BC', DE' és HL' regiszterpárokban lévő 2 byte-os értékkel.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
Példa:
Ha a BC, DE és HL regiszterpárok tartalma számértékben 445AH, 3DA2H és 8859H, és a BC', DE' és HL' regiszterpárok tartalma, 0988H, 9300H és 00E7H, az
EXX
utasítás végrehajtásának eredményeként a regiszterpárok tartalma a következőképpen alakul: BC: 0988H; DE: 9300H; HL: 00E7H; BC': 445AH; DE': 3DA2H; és HL': 8859H.
Formátum: | OP kód |
Operandusok |
HALT |
- |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
76 |
Leírás:
A HALT utasítás a következő megszakítás vagy törlési utasítás detektálásáig felfüggeszti a CPU működését. A "halt" állapotban a processzor memória frissítő logika működtetéséhez NOP utasításokat hajt végre.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.: 1,00 |
Formátum: | OP kód |
Operandusok |
IM |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
46 |
Leírás:
Az IM 0 utasítás a 0-s megszakítási módot (mode 0) állítja be. Ebben az üzemmódban a megszakítást kérő eszköz a megszakítás elfogadását követően egy tetszőleges utasítás helyezhet az adatbuszra, hogy azt a CPU végrehajtsa.
M ciklusok: 2 | T állapotok: 8 (4, 4) | 4 MHz V.i.: 2,00 |
Formátum: | OP kód |
Operandusok |
IM |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
56 |
Leírás:
Az IM 1 utasítás az 1-s megszakítási módot (mode 1) állítja be. Ebben az üzemmódban a processzor a megszakítási kérelemre egy 0038H-as memóriarekeszre irányuló "Restart" végrehajtásával (RST0038H) válaszol.
M ciklusok: 2 | T állapotok: 8 (4, 4) | 4 MHz V.i.: 2,00 |
Formátum: | OP kód |
Operandusok |
IM |
2 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
5E |
Leírás:
Az IM 2 utasítás a 2-es megszakítási üzemmódot (mode 2) állítja be. Ez az üzemmód egy tetszőleges memóriarekeszre irányuló "Indirekt Call" végrehajtását teszi lehetővé. Ebben az üzemmódban a CPU egy 16 bites memóriacímet állít össze. A cím felső 8 bitjét az I "Interrupt Vector Register" tartalmazza, míg az alacsonyabb helyértékű 8 bitet a megszakítás elfogadásakor a megszakítást kérő eszköz helyezi az adatbuszra.
M ciklusok: 2 | T állapotok: 8 (4, 4) | 4 MHz V.i.: 2,00 |
Formátum: | OP kód |
Operandusok |
IN |
A,(n) |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
DB |
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
A végrehajtás során az utasításnak a címbusz alsó felére (A0-tól A7-ig) helyezett n operandusa a 256 lehetséges periféria regiszter (I/O port) egyikét választja ki. Ugyanakkor az akkumulátor regiszter tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. A kiválasztott periféria regiszter tartalma az adatbuszra kerül és a CPU akkumulátor regiszterébe (A regiszter) íródik.
M ciklusok: 3 | T állapotok: 11 (4, 3, 4) | 4 MHz V.i.: 2,75 |
Példa:
Ha az akkumulátor tartalma 23H, és a 01H című periféria regiszterben 7BH van jelen, akkor az
IN A ,(01H)
utasítás végrehajtása után az akkumulátor 7BH-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
IN |
r,(C) |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
EB |
0 |
1 |
< |
n |
> |
0 |
0 |
0 |
Leírás:
A periféria regisztert közvetve, regiszter indirekt címzési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során a C regiszter tartalma a címbusz alsó 8 bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria regiszter egyikét. Ugyanakkor a B regiszter tartalma a címbusz felső 8 bitjén (A8-tól A15-ig) jelenik meg. A C regiszter tartalma által megcímzett periféria regiszterben lévő byte az adatbuszra kerül, majd a CPU-nak az utasítás r mezője által meghatározott regiszterébe íródik. Az r bármelyik CPU regisztert kijelölheti. Az egyes regiszterekhez hozzárendelt 3 bites r mezőket az alábbi táblázat mutatja. Az állapot bitek a beolvasott adat tartalmának megfelelően állnak be:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
M ciklusok: 3 | T állapotok: 12 (4, 4, 4) | 4 MHz V.i.:3,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha a beolvasott adat negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha a beolvasott adat nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül, páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a C regiszter tartalma. 07H, a B regiszter tartalma 10H, és a 07H című periféria regiszterben 7BH van jelen, akkor az
IN D,(C)
végrehajtásának eredményeként a D regiszter tartalma 7BH lesz, míg a B és C regiszterek tartalma változatlan marad.
Formátum: | OP kód |
Operandusok |
INC |
(HL) |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
34 |
Leírás:
A HL regiszter tartalma által megcímzett memóriarekesz tartalma inkrementálódik.
M ciklusok: 3 | T állapotok: 11 (4, 4, 3) | 4 MHz V.i.:2,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha a beolvasott adat negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha a beolvasott adat nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba, kerül, ha a működés előtt HL 7FH volt; egyébként törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a HL regiszterpár tartalma 3434H, és a 3434H című memóriarekeszben lévő byte 82H, akkor az
INC (HL)
végrehajtásának eredményeként a 3434H című memóriarekesz 83H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
INC |
IX |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
23 |
Leírás:
Az IX regiszter tartalma inkrementálódik.
M ciklusok: 2 | T állapotok: 10 (4, 6) | 4 MHz V.i.:2,5 |
Példa:
Ha az IX index regiszter 3300H egész számot tartalmaz, a
INC IX
utasítás végrehajtásának eredményeként az IX index regiszter tartalma 3301H lesz.
Formátum: | OP kód |
Operandusok |
INC |
(IX+d) |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
23 |
< |
- |
- |
d |
- |
- |
- |
> |
Leírás:
Az IX index regiszter (IX regiszterpár) tartalmához hozzáadódik az utasítás d mezőjében szeplő 2-es komplemensű egész számként ábrázolt címkiegészítés. Az így kapott memóriacím által meghatározott rekesz tartalma inkrementálódik.
M ciklusok: 6 | T állapotok: 23 (4, 4, 3, 5, 4, 3) | 4 MHz V.i.:5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha a beolvasott adat negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha, a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha, a működés előtt (IX+d) 7FH volt; egyébként törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha, az IX index regiszter tartalma 2020H, és a 2030H című memóriarekeszben lévő byte 34H, az
INC (IX+10H)
utasítás végrehajtásának eredményeként a 2030H című memóriarekesz tartalma 35H lesz.
Formátum: | OP kód |
Operandusok |
INC |
IY |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
23 |
Leírás:
Az IY regiszter tartalma inkrementálódik.
M ciklusok: 2 | T állapotok: 10 (4, 6) | 4 MHz V.i.:2,5 |
Példa:
Ha az IY index regiszter tartalma 2977H, akkor az
INC IY
utasítás végrehajtásának eredményeként az IY index regiszter tartalma 2978H lesz.
Formátum: | OP kód |
Operandusok |
INC |
(IY+d) |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
34 |
< |
- |
- |
d |
- |
- |
- |
> |
Leírás:
Az IY index regiszter (IY regiszterpár) tartalmához hozzáadódik az utasítás d mezőjében szeplő 2-es komplemensű egész számként ábrázolt címkiegészítés. Az így kapott memóriacím által meghatározott rekesz tartalma inkrementálódik.
M ciklusok: 6 | T állapotok: 23 (4, 4, 3, 5, 4, 3) | 4 MHz V.i.:5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha a beolvasott adat negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha, az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha, a működés előtt (IY+d) 7FH volt; egyébként törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha, az IY index regiszter tartalma 2020H, és a 2030H című memóriarekeszben lévő byte 34H, az
INC (IY+10H)
utasítás végrehajtásának eredményeként a 2030H című memóriarekesz tartalma 35H lesz.
Formátum: | OP kód |
Operandusok |
INC |
r |
0 |
0 |
< |
r |
> |
1 |
0 |
0 |
Leírás:
Az r regiszter inkrementálódik, r azonosítja az A,B,C,D,E,H vagy L regiszterek bármelyikét, amely tárgykódban a következő lehet:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.:1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha a beolvasott adat negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha, az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha a 3-as biten átvitel keletkezik; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha, a működés előtt r 7FH volt; egyébként törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a D regiszter tartalma 28H, az
INC D
utasítás végrehajtásának eredményeként a D regiszter tartalma 29H lesz.
Formátum: | OP kód |
Operandusok |
INC |
ss |
0 |
0 |
s |
s |
0 |
0 |
1 |
1 |
Leírás:
Az ss regiszterpár (a BC, DE, HL vagy SP regiszterpárok bármelyike) tartalma inkrementálódik. Az ss operandus tárgykódban a következő lehet:
Regiszterpár |
ss |
BC |
00 |
DE |
01 |
HL |
10 |
SP |
11 |
M ciklusok: 1 | T állapotok: 6 | 4 MHz V.i.:1,50 |
Példa:
Ha a HL regiszterpár 1000H-t tartalmaz, az
INC HL
utasítás végrehajtásának eredményeként a HL 1001H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
INC |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
AA |
Leírás:
A periféria regisztert közvetve, regiszter indirekt címzési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során a C regiszter tartalma a címbusz alsó 8 bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria regiszter egyikét. Ugyanekkor a byte számlálóként felhasználható B regiszter tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. A megcímzett periféria regiszter tartalma az adatbuszra kerül, majd a CPU-ba íródik. Ugyanekkor a HL regiszterpár tartalma a címbuszra kerül, és a periféria regiszterből beolvasott byte az ilyen módon megcímzett memóriarekeszbe íródik. Végül a byte számláló, és a HL regiszterpár dekrementálódik.
M ciklusok: 4 | T állapotok: 16 (4, 5, 3, 4) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül, ha B-1=0; egyébként törlődik |
H: |
ismeretlen |
P/V: |
ismeretlen |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a C regiszter tartalma 07H, a B regiszter tartalma 10H, a HL regiszterpár tartalma, 1000H, és a 07H című periféria regiszterben 7BH van jelen, akkor az
IND
utasítás végrehajtásának eredményeként az 1000H című memóriarekesz 7BH-t, a HL regiszterpár 0FFFH-t, és a B regiszter 0FH-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
INDR |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
BA |
Leírás:
A periféria regisztert közvetve, regiszter indirekt címzési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során a C regiszter tartalma a címbusz alsó 8 bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria regiszter egyikét. Ugyanekkor a byte számlálóként felhasználható B regiszter tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. A megcímzett periféria regiszter tartalma az adatbuszra kerül, majd a CPU-ba íródik. Ugyanekkor a HL regiszterpár tartalma a címbuszra kerül, és a periféria regiszterből beolvasott byte az ilyen módon megcímzett memóriarekeszbe íródik. Végül a byte számláló, és a HL regiszterpár dekrementálódik. Ha a B (byte számláló) dekrementálása zérust eredményez, az utasítás befejeződik. Ha a dekrementálás eredménye nem zérus, akkor a programszámláló tartalma 2-vel dekrementálódik, és az utasítás végrehajtása ismétlődik. Megjegyezzük, hogy ha az utasítás végrehajtását megelőzően B tartalma 0-ra lett beállítva, 256 byte adat olvasódik be. Minden adatbeolvasást követően két memória frissítési ciklus zajlik le, és ugyanekkor programmegszakítási kérelmek is érvényre juthatnak.
Ha B<>0:
M ciklusok: 5 | T állapotok: 21 (4, 5, 3, 4, 5) | 4 MHz V.i.:5,25 |
Ha B=0:
M ciklusok: 4 | T állapotok: 16 (4, 5, 3, 4) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül |
H: |
ismeretlen |
P/V: |
ismeretlen |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a C regiszter tartalma 07H, a B regiszter tartalma 03H, a HL regiszterpár tartalma 1000H, és a következő byte-sorozat áll rendelkezésre a 07H című periféria regiszterben:
51H
A9H
03H
akkor az
INDR
utasítás végrehajtásának eredményeként a HL regiszterpár 0FFDH-t, a B regiszter zérust fog tartalmazni, és a memóriarekeszek tartalma a következőképpen alakul:
Rekesz |
Tartalom |
0FFEH |
03H |
0FFFH |
A9H |
1000H |
51H |
Formátum: | OP kód |
Operandusok |
INI |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
A2 |
Leírás:
A periféria regisztert közvetve, regiszter indirekt címzési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során a C regiszter tartalma a címbusz alsó 8 bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria regiszter egyikét. Ugyanekkor a byte számlálóként felhasználható B regiszter tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. A megcímzett periféria regiszter tartalma az adatbuszra kerül, majd a CPU-ba íródik. Ugyanekkor a HL regiszterpár tartalma a címbuszra kerül, és a periféria regiszterből beolvasott byte az ilyen módon megcímzett memóriarekeszbe íródik. Végül a byte számláló dekrementálódik, és a HL regiszterpár inkrementálódik.
M ciklusok: 4 | T állapotok: 16 (4, 5, 3, 4) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül, B-1=0; egyébként törlődik |
H: |
ismeretlen |
P/V: |
ismeretlen |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a C regiszter tartalma 07H, a B regiszter tartalma 10H, a HL regiszterpár tartalma 1000H, és a 07H című periféria regiszterben 7 BH van jelen, akkor az
INI
utasítás végrehajtásának eredményeként az 1000H című memóriarekesz 7BH-t, a HL regiszterpár 1001H-t, és a B regiszter 0FH-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
INIR |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
B2 |
Leírás:
A periféria regisztert közvetve, regiszter indirekt címzési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során a C regiszter tartalma a címbusz alsó 8 bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria regiszter egyikét. Ugyanekkor a byte számlálóként felhasználható B regiszter tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. A megcímzett periféria regiszter tartalma az adatbuszra kerül, majd a CPU-ba íródik. Ugyanekkor a HL regiszterpár tartalma a címbuszra kerül, és a periféria regiszterből beolvasott byte az ilyen módon megcímzett memóriarekeszbe íródik. Azután a HL regiszterpár inkrementálódik, a byte számláló pedig dekrementálódik. Ha a B (byte számláló) dekrementálása zérust eredményez, az utasítás befejeződik. Ha a dekrementálás eredménye nem zérus, akkor a programszámláló tartalma 2-vel dekrementálódik, és az utasítás végrehajtása ismétlődik. Megjegyezzük, hogy ha az utasítás végrehajtását megelőzően B tartalma 0-ra lett beállítva, 256 byte adat olvasódik be. Minden adatbeolvasást követően két memória frissítési ciklus zajlik le, és ugyanekkor programmegszakítási kérelmek is érvényre juthatnak.
Ha B<>0:
M ciklusok: 5 | T állapotok: 21 (4, 5, 3, 4, 5) | 4 MHz V.i.:5,25 |
Ha B=0:
M ciklusok: 4 | T állapotok: 16 (4, 5, 3, 4) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül |
H: |
ismeretlen |
P/V: |
ismeretlen |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a C regiszter tartalma 07H, a B regiszter tartalma 03H, a HL regiszterpár tartalma 1000H, és a következő byte-sorozat áll rendelkezésre a 07H című periféria regiszterben:
51H
A9H
03H
akkor az
INIR
utasítás végrehajtásának eredményeként a HL regiszterpár 1003H-t, a B regiszter zérust fog tartalmazni, és a memóriarekeszek tartalma a következőképpen alakul:
Rekesz |
Tartalom |
1000H |
51H |
1001H |
A9H |
1002H |
03H |
Formátum: | OP kód |
Operandusok |
JP |
(HL) |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
E9 |
Leírás:
A programszámláló regiszter (PC regiszterpár) a HL regiszterpár tartalmával töltődik fel. A soron következő utasítás a programszámláló új tartalma által meghatározott memóriarekeszből lesz kiolvasva.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.:1,00 |
Ha a programszámláló tartalma 1000H, és a HL regiszterpár tartalma 4800H, akkor a
JP (HL)
utasítás végrehajtásknak eredményeként a programszámláló tartalma 4800H lesz.
Formátum: | OP kód |
Operandusok |
JP |
(IX) |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
E9 |
Leírás:
A programszámláló (PC regiszterpár) az IX regiszterpár (IX index regiszter) tartalmával töltődik fel. A soron következő utasítás a programszámláló új tartalma által meghatározott memóriarekeszekből lesz kiolvasva.
M ciklusok: 2 | T állapotok: 8 (4, 4) | 4 MHz V.i.:2,00 |
Példa:
Ha a programszámláló tartalma 1000H, és az IX regiszterpár tartalma 4800H, akkor a
JP (IX)
utasítás végrehajtásának eredményeként a programszámláló tartalma 4800H lesz.
Formátum: | OP kód |
Operandusok |
JP |
(IY) |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
E9 |
Leírás:
A programszámláló (PC regiszterpár) az IY regiszterpár (IY index regiszter) tartalmával töltődik fel. A soron következő utasítás a programszámláló új tartalma által meghatározott memóriarekeszekből lesz kiolvasva.
M ciklusok: 2 | T állapotok: 8 (4, 4) | 4 MHz V.i.:2,00 |
Példa:
Ha a programszámláló tartalma 1000H, és az IY regiszterpár tartalma 4800H, akkor a
JP (IY)
utasítás végrehajtásának eredményeként a programszámláló tartalma 4800H lesz.
Formátum: | OP kód |
Operandusok |
JP |
cc,nn |
1 |
1 |
< |
cc |
> |
0 |
1 |
0 |
< |
- |
- |
n |
- |
- |
- |
> |
< |
- |
- |
n |
- |
- |
- |
> |
Megjegyzés: A fenti assemblerrel lefordított tárgykódban elsőként szereplő n operandus egy 2 byte-os memóriacím alacsonyabb helyértékű byte-ja.
Leírás:
Ha a cc feltétel teljesül, az utasítás az nn operandust a PC (programszámláló) regiszterbe tölti, és a program az nn címmel kezdődő utasítás végrehajtásával folytatódik. Ha a cc feltétel nem teljesül, akkor a programszámláló a normál módon inkrementálódik, és a program a soron következő utasítás végrehajtásával folytatódik. A cc feltétel programozása a jelzőbit regiszter (F regiszter) valamelyik bitjének kijelölésével történhet. Az ilyen módon kijelölhető 8 feltételt tárgykódban az alábbi táblázat definiálja:
cc |
Feltétel |
aktuális bit |
|
000 001 010 011 100 101 110 111 |
NZ Z NC C PO PE P M |
nem zérus zérus nincs átvitel átvitel páratlan paritás páros paritás pozitív előjel negatív előjel |
Z Z C C P/V P/V S S |
M ciklusok: 3 | T állapotok: 10 (4, 3, 3) | 4 MHz V.i.:2,50 |
Példa:
Ha az átvitel bit (a C bit a jelzőbit regiszterben) 1-es állapotban van, és a l520H című memóriarekesz tartalma 03H, akkor a
JP C,1520H
végrehajtásának eredményeként a programszámláló 1520H-t fog tartalmazni, és a következő gépi ciklusban a CPU az 1520H-s címen elhelyezett 03H-s byte-ot fogja kiemelni.
Formátum: | OP kód |
Operandusok |
JP |
nn |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
C3 |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Megjegyzés: A fenti assemblerrel lefordított tárgykódban elsőként szereplő n operandus egy 2 byte-os memóriacím alacsonyabb helyértékű byte-ja.
Leírás:
Feltétel nélküli vezérlés átadó utasítás. Végrehajtása során az nn operandus a programszámláló regiszterbe (PC) töltődik, és így kijelöli azt a memóriarekeszt, ahonnan a CPU a következő utasítást kiemeli.
M ciklusok: 3 | T állapotok: 10 (4, 3, 3) | 4 MHz V.i.:2,50 |
Formátum: | OP kód |
Operandusok |
JR |
C,e |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
38 |
< |
- |
- |
e-2 |
- |
- |
- |
> |
Leírás:
Az utasítás az átvitel bit vizsgálatának eredményétől függően egy más programszegmensre történő relatív címzésű feltételes vezérlésátadást tesz lehetővé. Ha a vizsgálat során az "átvitel bit" tartalma 1, akkor az e 2-es komplemensű egész számként értelmezett címkiegészítés értéke a programszámláló (PC) tartalmához adódik, és a következő utasítást az így kapott címről fogja a CPU kiemelni. Az ugrás hossza az utasítás OP kódját tartalmazó memóriarekesz címétől értendő, és tartománya -126...+129 byte lehet. Az assembler kiszámolja az "e" címkiegészítés értékét, majd az utasítás végrehajtása során automatikusan 2-vel növelt PC tartalom miatt szükségessé váló korrekciót (2-vel való csökkentését) is végrehajtja. (A PC tartalomnak ez a 2-vel történő növelése az utasítás 2 byte-os hosszának következménye). Ha az átvitel bit 0-t tartalmaz, a következő utasítást a normál módon soron következő memóriarekeszből emeli ki a CPU.
Ha a feltétel teljesül:
M ciklusok: 3 | T állapotok: 12 (4, 3, 5) | 4 MHz V.i.:3,00 |
Ha a feltétel nem teljesül:
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
Az átvitel bit 1-es állapotban van, és a 480H memóriacímtől 4 rekesznyit kell visszaugrani. Az assembler nyelvű utasítás:
JR C, CIMKE
Az eredményként kapott tárgykód, és a PC végső értéke az alábbi táblázaton látható:
Rekesz | OP kód | ||
47C 47D 47E 47F 480 481 |
CIMKE: | - - - - JR,CIMKE |
PC az ugrás után - - - 38 FA (-6, 2-es komplemens kódban) |
Formátum: | OP kód |
Operandusok |
JR |
e |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
18 |
< |
- |
- |
e-2 |
- |
- |
- |
> |
Leírás:
Az utasítás egy más programszegmensre történő, relatív címzésű, feltétel nélküli vezérlésátadást biztosít. Az e 2-es komplemensű egész számként értelmezett címkiegészítés értéke a programszámláló (PC) tartalmához adódik, és a, következő utasítást az így kapott címről fogja a CPU kiemelni. Az ugrás hossza az utasítás OP kódját tartalmazó memóriarekesz címétől értendő, és tartománya -126...+129 byte lehet. Az assembler kiszámolja az "e" címkiegészítés értékét, majd az utasítás végrehajtása során automatikusan 2-vel növelt PC tartalom miatt szükségessé váló korrekciót (2-vel való csökkentést) is végrehajtja. (A PC tartalomnak ez a 2-vel történő növelése az utasítás 2 byte-os hosszának következménye).
M ciklusok: 3 | T állapotok: 12 (4, 3, 5) | 4 MHz V.i.:3,00 |
Példa:
A 480-as címtől 5 rekeszre előre ugráskor a következő assembler nyelvű utasítást használjuk:
JR CIMKE
Az eredményként kapott tárgykód, és a PC végső értéke az alábbi táblázaton látható:
Rekesz | OP kód | ||
480 481 482 483 484 485 |
CIMKE: |
JR CIMKE - - - - - |
18 03 PC az ugrás után |
Formátum: | OP kód |
Operandusok |
JR |
NC,e |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
30 |
< |
- |
- |
e-2 |
- |
- |
- |
> |
Leírás:
Az utasítás az átvitel bit vizsgálatának eredményétől függően egy más programszegmensre történő relatív címzéssel feltételes vezérlésátadást tesz lehetővé. Ha a vizsgálat során az "átvitel bit" tartalma 0, akkor az e 2-es komplemensű egész számként értelmezett címkiegészítés értéke a programszámláló (PC) tartalmához adódik, és a következő utasítást az így kapott címről fogja a CPU kiemelni. Az ugrás hossza az utasítás OP kódját tartalmazó memóriarekesz címétől értendő, és tartománya -126...+129 byte lehet. Az assembler kiszámolja az "e" címkiegészítés értékét, majd az utasítás végrehajtása során automatikusan 2-vel növelt PC tartalom miatt szükségessé váló korrekciót (2-vel való csökkentést) is végrehajtja. (A PC tartalomnak ez a 2-vel történő növelése az utasítás 2 byte-os hosszának következménye).
Ha az átvitel bit 1-et tartalmaz, a következő utasítást a normál módon soron következő memóriarekeszből emeli ki a CPU.
Ha a feltétel teljesül:
M ciklusok: 3 | T állapotok: 12 (4, 3, 5) | 4 MHz V.i.:3,00 |
Ha a feltétel nem teljesül:
M ciklusok: 7 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
Az átvitel bit törölt, és az ugró utasítást meg kell ismételni. Az assembler nyelvű utasítás:
CIMKE: JR NC,CIMKE
Az eredményként kapott tárgykód, és a PC végső értéke az alábbi táblázaton látható:
Rekesz | OP kód | ||
480 481 |
CIMKE: | JR NC,CIMKE | 30 - PC az ugrás után 00 |
Formátum: | OP kód |
Operandusok |
JR |
NZ,e |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
20 |
< |
- |
- |
e-2 |
- |
- |
- |
> |
Leírás:
Az utasítás a Z zérus bit vizsgálatának eredményétől függően egy más programszegmensre történő relatív címzésű feltételes vezérlésátadást tesz lehetővé. Ha a vizsgálat során a bit tartalma 0, akkor az e 2-es komplemensű egész számként értelmezett címkiegészítés értéke a programszámláló (PC) tartalmához adódik, és a következő utasítást az így kapott címről fogja a CPU kiemelni. Az ugrás hossza az utasítás 0P kódját tartalmazó memóriarekesz címétől értendő, és tartománya -126...+129 byte lehet. Az assembler kiszámolja az "e" címkiegészítés értékét, majd az utasítás végrehajtása során automatikusan 2-vel növelt PC tartalom miatt szükségessé váló korrekciót (2-vel történő csökkentést) is végrehajtja. (A PC tartalomnak ez a 2-vel való növelése az utasítás 2 byte-os hosszának következménye). Ha a Z bit 1-et tartalmaz, a következő utasítást a normál módon soron következő memóriarekeszből emeli ki a CPU.
Ha a feltétel teljesül:
M ciklusok: 3 | T állapotok: 12 (4, 3, 5) | 4 MHz V.i.:3,00 |
Ha a feltétel nem teljesül:
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
A Z zérus bit törölt, és a 480H memóriacímtől 4 rekesznyit kell visszaugrani. Az assembler nyelvű utasítás:
JR NZ, CIMKE
Az eredményként kapott tárgykód, és a PC végső értéke az alábbi táblázaton látható:
Rekesz | OP kód | ||
47C 47D 47E 47F 480 481 |
CIMKE: | - - - - JR NZ,CIMKE |
PC az ugrás után 20 FA (-6, 2-es komplemens kódban) |
Formátum: | OP kód |
Operandusok |
JR |
Z,e |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
28 |
< |
- |
- |
e-2 |
- |
- |
- |
> |
Leírás:
Az utasítás a Z zérus bit vizsgálatának eredményétől függően egy más programszegmensre történő relatív címzésű feltételes vezérlésátadást tesz lehetővé. Ha a vizsgálat során a bit tartalma 1, akkor az "e" 2-es komplemensű egész számként értelmezett címkiegészítés értéke a programszámláló (PC) tartalmához adódik, és a következő utasítást az így kapott címről fogja a CPU kiemelni. Az ugrás hossza az utasítás OP kódját tartalmazó memóriarekesz címétől értendő, és tartománya -126...+129 byte lehet. Az assembler kiszámolja az "e" címkiegészítés értékét, majd az utasítás végrehajtása során automatikusan 2-vel megnövelt PC tartalom miatt szükségessé váló korrekciót (2-vel való csökkentést) is elvégzi. (A PC tartalomnak ez a 2-vel történő növelése az utasítás 2 byte-os hosszának következménye). Ha a Z bit 0-t tartalmaz, a következő utasítást a normál módon soron következő memóriarekeszből emeli ki a CPU.
Ha a feltétel teljesül:
M ciklusok: 3 | T állapotok: 12 (4, 3, 5) | 4 MHz V.i.:3,00 |
Ha a feltétel nem telesül:
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
A Z zérus bit 1-es állapotban van, és a 300H memóriacímtől 5 rekesznyit kell előre ugrani. Az assembler nyelvű utasítás a következő:
JR Z,CIMKE
Az eredményként kapott tárgykód, és a PC végső értéke az alábbi táblázaton látható:
Rekesz | OP kód | ||
300 301 302 303 304 305 |
CIMKE: |
JR Z,CIMKE - - - - - |
28 03 PC az ugrás után |
Formátum: | OP kód |
Operandusok |
LD |
A,(BC) |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0A |
Leírás:
A BC regiszterpár tartalma által specifikált memóriarekesz tartalma az akkumulátorba töltődik.
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
Ha a BC regiszterpár tartalma számértékben 4747H, és a 4747H című memóriarekeszben lévő byte 12H, akkor az
LD A,(BC)
utasítás végrehajtásának eredményeként a 12H byte az A regiszterbe töltődik.
Formátum: | OP kód |
Operandusok |
LD |
A,(DE) |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1A |
Leírás:
A DE regiszterpár tartalma által specifikált memóriarekesz tartalma az akkumulátorba töltődik.
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
Ha a DE regiszterpár tartalma számértékben 30A2H, és a 30A2H című memóriarekeszben lévő byte 22H, akkor az
LD A,(DE)
utasítás végrehajtásának eredményeként a 22H byte az A regiszterbe töltődik.
Formátum: | OP kód |
Operandusok |
LD |
A,I |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
57 |
Leírás:
Az I Interrupt Vector Register tartalma az akkumulátorba töltődik.
M ciklusok: 2 | T állapotok: 9 (4, 5) | 4 MHz V.i.:2,25 |
A jelzőbit érintett bitjei:
S: |
1-es állapotba kerül, ha az I regiszter negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az I regiszter nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
IFF2 értékét veszi fel |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha az Interrupt Vector Register-ben lévő byte 4AH, akkor az
LD A,I
utasítás végrehajtásának az eredményeként az akkumulátor is 4AH-t fog tartalmazni.
Megjegyzés: az LD A, I és az LD A, R utasítás hibásan tárolja a megszakítás engedélyezését a P/V biten, ha véletlenül pont ilyen utasításnál történik megszakítás. Ez nem minden Z80 változatnál fordul elő, csak az NMOS hibás.
Formátum: | OP kód |
Operandusok |
LD |
A,(nn) |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
3A |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az nn operandusok által specifikált memóriarekesz tartalma az akkumulátorba töltődik. Az első a operandus egy 2 byte-os memóriacím alacsonyabb helyértékű byte-ja.
M ciklusok: 4 | T állapotok: 13 (4, 3, 3, 3) | 4 MHz V.i.:3,25 |
Példa:
Ha nn tartalma számértékben 8832H, és a 8832H című memóriarekeszben lévő byte 04H, akkor az
LD A,( nn)
utasítás végrehajtásának eredményeként a 04H byte az akkumulátorba töltődik.
Formátum: | OP kód |
Operandusok |
LD |
A,R |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
5F |
Leírás:
Az R Memory Refresh Register tartalma az akkumulátorba töltődik.
M ciklusok: 2 | T állapotok: 9 (4, 5) | 4 MHz V.i.:2,25 |
A jelzőbit regiszter bitjei:
S: |
1-es állapotba kerül, ha az R regiszter negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az Rregiszter nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
IFF2 értékét veszi fel |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a Memory Refresh Register-ben lévő byte 4AH, akkor az
LD A,R
utasítás végrehajtásának eredményeként az akkumulátor is 4AH-t fog tartalmazni.
Megjegyzés: az LD A, I és az LD A, R utasítás hibásan tárolja a megszakítás engedélyezését a P/V biten, ha véletlenül pont ilyen utasításnál történik megszakítás. Ez nem minden Z80 változatnál fordul elő, csak az NMOS hibás.
Formátum: | OP kód |
Operandusok |
LD |
(BC),A |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
02 |
Leírás:
A BC regiszterpár tartalma által specifikált memóriarekeszbe töltődik az akkumulátor tartalma.
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
Ha az akkumulátor 7AH-t és a BC regiszterpár 1212H-t tartalmaz, akkor az
LD (BC),A
utasítás végrehajtásának eredményeként a 7AH a 1212H című memóriarekeszbe töltődik.
Formátum: | OP kód |
Operandusok |
LD |
(DE),A |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
12 |
Leírás:
Az akkumulátor tartalma a DE regiszterpár tartalma által specifikált memóriarekeszbe töltődik.
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
Ha a DE regiszterpár tartalma 1128H, és az akkumulátorban lévő byte A0H, akkor az
LD (DE),A
utasítás végrehajtásának eredményeként A0H a 1128H című memóriarekeszbe töltődik.
Formátum: | OP kód |
Operandusok |
LD |
(HL),n |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
36 |
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az n egész szám a HL regiszterpár tartalma által specifikált memóriarekeszbe töltődik.
M ciklusok: 3 | T állapotok: 10 (4, 3, 3) | 4 MHz V.i.:2,50 |
Példa:
Ha a HL regiszterpár 4444H-t tartalmaz, akkor az
LD (HL), 28H
utasítás végrehajtásának eredményeként a 4444H című memóriarekeszbe 28H töltődik.
Formátum: | OP kód |
Operandusok |
LD |
dd,nn |
0 |
0 |
d |
d |
0 |
0 |
0 |
1 |
< |
- |
- |
n |
- |
- |
- |
> |
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az nn 2 byte-os egész szám a dd regiszterpárba töltődik, ahol a dd a BC, DE, HL vagy SP regiszterpárok egyikét jelöli, ezek tárgykódban a következők lehetnek:
Regiszterpár |
dd |
BC |
00 |
DE |
01 |
HL |
10 |
SP |
11 |
A tárgykódban elsőként szereplő n operandus az alacsonyabb helyértékű byte-ot képviseli.
M ciklusok: 3 | T állapotok: 10 (4, 3, 3) | 4 MHz V.i.:2,50 |
Példa:
Az
LD HL,5000H
utasítás végrehajtása után a HL regiszterpár tartalma 5000H lesz.
Formátum: | OP kód |
Operandusok |
LD |
dd,nn |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
d |
d |
1 |
0 |
1 |
1 |
|
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az nn című memóriarekesz tartalma a dd regiszterpár alacsonyabb helyértékű regiszterébe töltődik, míg az nn+l című memóriarekesz tartalma a dd regiszterpár magasabb helyértékű byte-jába töltődik. A dd regiszterpár a BC, DE, HL vagy SP regiszterpárok egyikét jelöli, amelyek tárgykódban a következők lehetnek:
Regiszterpár |
dd |
BC |
00 |
DE |
01 |
HL |
10 |
SP |
11 |
A fenti tárgykódban elsőként szereplő n operandus nn alacsonyabb helyértékű byte-ja.
M ciklusok: 6 | T állapotok: 20 (4, 4, 3, 3, 3, 3) | 4 MHz V.i.:5,00 |
Példa:
Ha a 2130H című memóriarekeszben lévő byte 65H, és a 2131H című memóriarekeszben lévő byte 78H, akkor az
LD BC,(2130H)
utasítás végrehajtásának eredményeként a BC regiszterpár 7865H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
HL,(nn) |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
2A |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az nn című memóriarekesz tartalma a HL regiszterpár alacsonyabb helyértékű regiszterébe (L regiszter) töltődik, míg az nn+1 című memóriarekesz tartalma a HL regiszterpár magasabb helyértékű byte-jába (H regiszter) töltődik. A fenti tárgykódban elsőként szereplő n operandus nn alacsonyabb helyértékű byte-ja.
M ciklusok: 5 | T állapotok: 16 (4, 3, 3, 3, 3) | 4 MHz V.i.:4,00 |
Példa:
Ha a 4545H című memóriarekesz 37H-t, és a 4546H című memóriarekesz A1H-t tartalmaz, akkor az
LD HL,(4545H)
utasítás végrehajtásának eredményeként a HL regiszterpár A137H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
(HL),r |
0 |
1 |
1 |
1 |
0 |
< |
r |
> |
Leírás:
Az r regiszter tartalma a HL regiszterpár tartalma által specifikált memóriarekeszbe töltődik. Az r az A, B, C, D, E, H vagy L regisztereket azonosítja, amelyek tárgykódban a következők lehetnek:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
Ha a HL regiszterpár tartalma a 2146H memóriacímre mutat, és a B regiszterben lévő byte 29H, akkor az
LD (HL),B
utasítás végrehajtásának eredményeként a 2146H című memóriarekesz szintén 29H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
I,A |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
47 |
Leírás:
Az akkumulátor tartalma az I Interrupt Control Vector Register-be töltődik.
M ciklusok: 2 | T állapotok: 9 (4, 5) | 4 MHz V.i.:2,25 |
Példa:
Ha az akkumulátor tartalma számértékben 81H, akkor az
LD I,A
utasítás végrehajtása után az Interrupt Vector Register szintén 81H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
IX,nn |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
21 |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az nn egész szám az IX index regiszterbe töltődik. A fenti assemblált tárgykódban elsőként szereplő n operandus az alacsonyabb helyértékű byte.
M ciklusok: 4 | T állapotok: 14 (4, 4, 3, 3) | 4 MHz V.i.:3,50 |
Példa:
Az
LD IX,45A2H
utasítás végrehajtásának eredményeként az index regiszter a 45A2H egész számot fogja tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
IX,(nn) |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
2A |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az nn című memóriarekesz tartalma az IX index regiszter alacsonyabb helyértékű byte-jába töltődik, míg az nn+l című memóriarekesz tartalma az IX index regiszter magasabb helyértékű byte-jába töltődik. A fenti tárgykódban elsőként szereplő n operandus nn alacsonyabb helyértékű byte-ja.
M ciklusok: 6 | T állapotok: 20 (4, 4, 3, 3, 3, 3) | 4 MHz V.i.:5,00 |
Példa:
Ha a 6666H című memóriarekesz 92H-t, és a 6667H című memóriarekesz DAH-t tartalmaz, akkor az
LD IX, (6666H)
utasítás végrehajtásának eredményeként az IX index regiszter DA92H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
(IX+d),n |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
36 |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az n operandus abba a memóriarekeszbe töltődik, amelynek címét az IX index regiszter, és a d 2-es komplemensű kódban adott címkiegészítés operandus összege jelöli ki.
M ciklusok: 5 | T állapotok: 19 (4, 4, 3, 5, 3) | 4 MHz V.i.:4,75 |
Példa:
Ha az IX index regiszter tartalma számértékben 219AH, az
LD (IX+5H),5AH
utasítás végrehajtásának eredményeként az 5AH byte a 219FH című memóriarekeszbe töltődik.
Formátum: | OP kód |
Operandusok |
LD |
(IX+d),r |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az r regiszter tartalma abba a memóriarekeszbe töltődik, amelynek címét az IX index regiszter, és a d 2-es komplemensű egész számként értelmezett címkiegészítés összege határozza meg. Az r szimbólum az A, B, C, D, E, H vagy L regisztereket azonosítja, amelyek tárgykódban a következők:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 5 | T állapotok: 19 (4, 4, 3, 5, 3) | 4 MHz V.i.:4,75 |
Példa:
Ha a C regiszterben lévő byte 1CH, és az IX index regiszter 3100H-t tartalmaz, akkor az
LD (IX+6H), C
utasítás elvégzi a 3100H+6H összegzést, és 1CH-t a 3106H című memóriarekeszbe tölti.
Formátum: | OP kód |
Operandusok |
LD |
IY,nn |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
21 |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az nn egész szám az IY index regiszterbe töltődik. A fenti tárgykódban elsőként szereplő n operandus az alacsonyabb helyiértékű byte-ot jelenti.
M ciklusok: 4 | T állapotok: 19 (4, 4, 3, 3) | 4 MHz V.i.:3,50 |
Példa:
Az
LD IY,7733H
utasítás végrehajtásának eredményeként az IY index regiszter a 7733H egész számot fogja tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
IY,(nn) |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
2A |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az nn című memóriarekesz tartalma az IY index regiszter alacsonyabb helyértéiLű byte-jába töltődik, míg az nn+1 című memóriarekesz tartalma az IY index regiszter magasabb helyértékű byte-jóba töltődik. A fenti tárgykódban elsőként szereplő n operandus az alacsonyabb helyértékű byte.
M ciklusok: 6 | T állapotok: 20 (4, 4, 3, 3, 3, 3) | 4 MHz V.i.:5,00 |
Példa:
Ha a 6666H című memóriarekesz 92H-t, és a 6667H című memóriarekesz DAH-t tartalmaz, akkor az
LD IY,(6666H)
utasítás végrehajtásának eredményeként az IY index regiszter tartalma, DA92H lesz.
Formátum: | OP kód |
Operandusok |
LD |
(IY+d),n |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
36 |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az n egész szám abba a memóriarekeszbe töltődik, amelynek címét az index regiszter, és a d egész számként értelmezett címkiegészítés összege határozza meg.
M ciklusok: 5 | T állapotok: 19 (4, 4, 3, 5, 3) | 4 MHz V.i.:4,75 |
Példa:
Ha az IY index regiszter tartalma számértékben A940H, az
LD (IY+10H), 97H
utasítás végrehajtásának eredményeként a 97H byte az A950H című memóriarekeszbe töltődik.
Formátum: | OP kód |
Operandusok |
LD |
(IY+d),r |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
1 |
1 |
1 |
0 |
< |
r |
> |
|
< |
- |
- |
d |
- |
- |
- |
> |
Leírás:
Az r regiszter tartalma abba a memóriarekeszbe töltődik, amelynek címét az IY index regiszter, és a d 2-es komplemensű egész számként értelmezett címkiegészítés összege határozza meg. Az r szimbólum az alábbi táblázat alapján specifikálható:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 5 | T állapotok: 19 (4, 4, 3, 5, 3) | 4 MHz V.i.:4,75 |
Példa:
Ha a C regiszterben lévő byte 48H, és az IY index regiszter 2A11H-t tartalmaz, akkor az
LD (IY+4H),C
utasítás elvégzi a 2A11H+4H összegzést, és 48H-t a 2A15H című memóriarekeszbe tölti.
Formátum: | OP kód |
Operandusok |
LD |
(nn),A |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
32 |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az akkumulátor tartalma az nn operandusok által specifikált memóriarekeszbe töltődik. A fenti tárgykódban elsőként szereplő n operandus nn alacsonyabb helyértékű byte-ja.
M ciklusok: 4 | T állapotok: 13 (4, 3, 3, 3) | 4 MHz V.i.:3,25 |
Példa:
Ha az akkumulátor tartalma D7H, akkor az
LD (3141H),A
utasítás végrehajtása után D7H a 3141H címez memóriarekeszbe töltődik.
Formátum: | OP kód |
Operandusok |
LD |
nn,dd |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
d |
d |
0 |
0 |
1 |
1 |
|
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
A dd regiszterpár alacsonyabb helyértékű byte-ja az nn című memóriarekeszbe töltődik, míg a magasabb helyértékű byte az nn+1 című memóriarekeszbe töltődik. A dd regiszterpár a BC, DE, HL vagy SP regiszterpárok varmelyikét azonosítja, melyek tárgykódban a következők:
Regiszterpár |
dd |
BC |
00 |
DE |
01 |
HL |
10 |
SP |
11 |
A fenti tárgykódban elsőként szereplő n operandus egy 2 byte-os memóriacím alacsonyabb helyértékű byte-ja.
M ciklusok: 6 | T állapotok: 20 (4, 4, 3, 3, 3, 3) | 4 MHz V.i.:5,00 |
Példa:
Ha a BC regiszterpár tartalma számértékben 4644H, akkor az
LD (1000H),BC
utasítás végrehajtásának eredményeként 44H az 1000H című memóriarekeszbe, 46H pedig az 1001H című memóriarekeszbe töltődik.
Formátum: | OP kód |
Operandusok |
LD |
(nn),HL |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
22 |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
A HL regiszterpár tartalmának alacsonyabb helyértékű byte-ja (L regiszter) az nn című memóriarekeszbe töltődik, és HL tartalmának magasabb helyertékű byte-ja pedig (H regiszter) az nn+1 című memóriarekeszbe töltődik. A fenti assemblált tárgykódban elsőként szereplő n operandus nn alacsonyabb helyértékű byte-ja.
M ciklusok: 5 | T állapotok: 16 (4, 3, 3, 3, 3) | 4 MHz V.i.:4,00 |
Példa:
Ha a HL regiszterpár tartalma 483AH, akkor az
LD (B229H),HL
utasítás végrehajtásának eredményeként a B229H című memóriarekesz tartalma 3AH, a B22AH című memóriarekeszé pedig 48H lesz.
Formátum: | OP kód |
Operandusok |
LD |
(nn),IX |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
22 |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az IX index regiszter tartalmának alacsonyabb helyértékű byte-ja az nn című memóriarekeszbe töltődik, míg a magasabb helyértékű byte az nn+1 című memóriarekeszbe töltődik. A fenti tárgykódban elsőként szereplő n operandus nn alacsonyabb helyértékű byte-ja.
M ciklusok: 6 | T állapotok: 20 (4, 4, 3, 3, 3, 3) | 4 MHz V.i.:5,00 |
Példa:
Ha az IX index regiszter 5A30H-t tartalmaz, akkor az
LD (4392H),IX
utasítás végrehajtásának eredményeként a 4392H című memóriarekesz tartalma számértékben 30H lesz, a 4393H című memóriarekesz tartalma pedig 5AH lesz.
Formátum: | OP kód |
Operandusok |
LD |
(nn),IY |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
22 |
< |
- |
- |
n |
- |
- |
- |
> |
|
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az IY index regiszter tartalmának alacsonyabb helyértékű byte-ja az nn című memóriarekeszbe töltődik, míg a magasabb helyértékű byte az nn+1 című memóriarekeszbe töltődik. A fenti tárgykódban elsőként szereplő n operandus nn alacsonyabb helyértékű byte-ja.
M ciklusok: 6 | T állapotok: 20 (4, 4, 3, 3, 3, 3) | 4 MHz V.i.:5,00 |
Példa:
Ha az IY index regiszter 4174H-t tartalmaz, akkor az
LD (8838H),IY
utasítás végrehajtásának eredményeként a 8838H című memóriarekesz tartalma számértékben 74H lesz, a 8839H című memóriarekesz tartalma pedig 41H lesz.
Formátum: | OP kód |
Operandusok |
LD |
R,A |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
4F |
Leírás:
Az akkumulátor tartalma az R Memory Refresh regiszterbe töltődik.
M ciklusok: 2 | T állapotok: 9 (4, 5) | 4 MHz V.i.:2,25 |
Példa:
Ha az akkumulátor tartalma számértékben B4H, akkor az
LD R,A
utasítás végrehajtása után az R Memory Refresh regiszter szintén B4H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
r,(HL) |
0 |
1 |
< |
r |
> |
1 |
1 |
0 |
Leírás:
A HL tartalma által kijelölt memóriarekeszben lévő byte az r regiszterbe töltődik, ahol r tárgykódban az A, B, C, D, E, H vagy L regisztereket azonosítja:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
Ha a HL regiszterpár tartalma számértékben 75A1H, és a 75A1H című memóriarekeszben lévő byte 58H, akkor az
LD C,(HL)
utasítás végrehajtásának eredményeként 58H a C regiszterbe töltődik.
Formátum: | OP kód |
Operandusok |
LD |
r,(IX+d) |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
0 |
1 |
< |
r |
> |
1 |
1 |
0 |
|
< |
- |
- |
d |
- |
- |
- |
> |
Leírás:
Az IX+d operandus (az IX index regiszter tartalma és a d egész számmal adott címkiegészítés által kijelölt memóriarekesz tartalmának összege) az r regiszterbe töltődik, ahol r az A, B, C, D, E, H vagy L regisztereket azonosítja, amelyek tárgykódban a következők:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 5 | T állapotok: 19 (4, 4, 3, 5, 3) | 4 MHz V.i.:4,75 |
Példa:
Ha az IX index regiszter tartalma számértékben 25AFH, akkor az
LD B,(IX+19H)
utasítás a 25AFH+19H összeadást eredményezi, ami a 25C8H című memóriarekeszre mutat. Ha ez a memóriarekesz 39H-t tartalmaz, az utasítás végrehajtásának eredményeként a B regiszter szintén 39H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
r,(IY+d) |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
0 |
1 |
< |
r |
> |
1 |
1 |
0 |
|
< |
- |
- |
d |
- |
- |
- |
> |
Leírás:
Az IY+d operandus (az IY index regiszter tartalma, és a d egész számmal adott címkiegészítés által kijelölt memóriarekesz tartalmának össze-e) az r regiszterbe töltődik, ahol r az A, B, C, D, E, H vagy L regisztereket azonosítja, amelyek a tárgykódban a követezők:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 5 | T állapotok: 19 (4, 4, 3, 5, 3) | 4 MHz V.i.:4,75 |
Példa:
Ha az IY index regiszter tartalma számértékben 25AFH, az
LD B,(IY+19H)
utasítás a 25AFH+19H összeadást eredményezi, amely a 25C8H című memóriarekeszre mutat. Ha ez a memóriarekesz 39H-t tartalmaz, az utasítás végrehajtásának eredményeként a B regiszter szintén 39H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
r,n |
0 |
0 |
< |
r |
> |
1 |
1 |
0 |
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
Az n 8 bites egész szám az r által meghatározott regiszterek egyikébe töltődik. Az r az A, B, C, D, E, H vagy L regisztereket azonosítja, amelyek tárgykódban a következők:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 2 | T állapotok: 7 (4, 3) | 4 MHz V.i.:1,75 |
Példa:
Az
LD E,A5H
utasítás végrehajtása után az E regiszter tartalma A5H lesz.
Formátum: | OP kód |
Operandusok |
LD |
r,r' |
0 |
1 |
< |
r |
> |
< |
r' |
> |
Leírás:
Az r' operandus által meghatározott háttérregiszter tartalma az r operandus által meghatározott regiszterbe töltődik. Megjegyzés: r,r' az A, B, C, D, E, H vagy L regiszterek bármelyikét azonosítja, amelyek tárgykódban a következők:
Regiszter |
r, r' |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.:1,00 |
Példa:
Ha a H regiszter tartalma számértékben 8AH, és az E regiszter 10H-t tartalmaz, akkor az
LD H,E
utasítás végrehajtása után mindkét regiszter 10H-t fog tartalmazni
Formátum: | OP kód |
Operandusok |
LD |
SP,HL |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
F9 |
Leírás:
A HL regiszterpár tartalma az SP veremtár-mutató regiszterbe töltődik.
M ciklusok: 1 | T állapotok: 6 | 4 MHz V.i.:1,50 |
Példa:
Ha a HL regiszterpár 442EH-t tartalmaz, akkor az
LD SP,HL
utasítás végrehajtása után az SP regiszter is 442EH-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LD |
SP,IX |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
F9 |
Leírás:
Az IX regiszterpár tartalma az SP veremtár-mutató regiszterbe töltődik.
M ciklusok: 2 | T állapotok: 10 (4, 6) | 4 MHz V.i.:2,50 |
Példa:
Ha a IX regiszterpár 98DAH-t tartalmaz, akkor az
LD SP,IX
utasítás végrehajtása után az SP regiszter tartalma szintén 98DAH lesz.
Formátum: | OP kód |
Operandusok |
LD |
SP,IY |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
F9 |
Leírás:
Az IY index regiszter 2 byte-os tartalma az SP regiszterbe töltődik.
M ciklusok: 2 | T állapotok: 10 (4, 6) | 4 MHz V.i.:2,50 |
Példa:
Ha az IY index regiszter tartalmazza az A227H egész számot, akkor az
LD SP,IY
utasítás végrehajtásának eredményeként az SP regiszter is A227H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
LDD |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
A8 |
Leírás:
Ez a két byte hosszúságú utasítás a HL regiszterpár tartalma által megcímzett memóriarekeszben lévő byte-ot a DE regiszterpár tartalma által megcímzett memóriarekeszbe tölti, majd mindkét regiszterpár, és a BC (byte számláló) regiszterpár is dekrementálódik.
M ciklusok: 4 | T állapotok: 16 (4, 4, 3, 5) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
törlődik |
P/V: |
1-es állapotba kerül, ha BC-1<>0; egyébként törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a HL regiszterpár 1111H-t tartalmaz, az 1111H című memóriarekeszben lévő byte 88H a DE regiszterpár tartalma 2222H, a 2222H című memóriarekeszben lévő byte 66H, és a BC regiszterpár 7H-t tartalmaz, akkor az
LDD
utasítás végrehajtásának eredményeként a regiszterpárok és a memóriarekeszek tartalma a következőképpen alakul:
HL : (1111H) : DE : (2222H) : BC : |
1110H 88H 2221H 88H 6H |
Formátum: | OP kód |
Operandusok |
LDDR |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
B8 |
Leírás:
A két byte hosszúságú utasítás a HL regiszterpár tartalma által megcímzett memóriarekeszben lévő byte-ot a DE regiszterpár tartalma által megcímzett memóriarekeszbe tölti, majd mindkét regiszterpár, és a BC regiszterpár (byte számláló) is dekrementálódik. Ha a dekrementálás eredményeként BC tartalma zérus lesz, akkor az utasítás befejeződik. Ha viszont a BC tartalma nem zérus, ekkor a programszámláló tartalma. 2-vel dekrementálódik, és az utasítás megismétlődik. Megjegyezzük, hogy ha BC tartalma az utasítás végrehajtását megelőzően zérusra lett beállítva, az utasítás 64K-szor ciklikusan ismétlődik. Minden egyes byte átvitelét követően 2 felfrissítési ciklus zajlik le, és ilyenkor megszakítási kérelmek is érvényre juthatnak.
Ha BC<>0:
M ciklusok: 5 | T állapotok: 21 (4, 4, 3, 5, 5) | 4 MHz V.i.:5,25 |
Ha BC=0:
M ciklusok: 4 | T állapotok: 16 (4, 4, 3, 5) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
törlődik |
P/V: |
törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a, HL regiszterpár 1114H-t tartalmaz, a DE regiszterpár 2225H-t, a BC regiszterpár 0003H-t tartalmaz, és a memóriarekeszek tartalma a következőképpen alakul:
(1114H) : (1113H) : (1112H) : |
A5H 36H 88H |
(2225H) : (2224H) : (2223H) : |
C5H 59H 66H |
akkor az
LDDR
utasítás végrehajtása után a regiszterpárok és a memóriarekeszek tartalma a következő lesz:
HL : DE : BC : |
1111H 2222H 0000H |
|||
(1114H) : (1113H) : (1112H) : |
A5H 36H 88H |
(2225H) : (2224H) : (2223H) : |
A5H 36H 88H |
Formátum: | OP kód |
Operandusok |
LDI |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
A0 |
Leírás:
Az utasítás a HL regiszterpár tartalma által megcímzett memóriarekeszben lévő byte-ot a DE regiszterpár tartalma által megcímzett memóriarekeszbe tölti, majd mindkét regiszterpár inkrementálódik, és a BC (byte számláló) regiszterpár dekrementálódik.
M ciklusok: 4 | T állapotok: 16 (4, 4, 3, 5) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
törlődik |
P/V: |
1-es állapotba kerül, ha BC-1<>0; egyébként törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
H a HL regiszterpár 1111H-t tartalmaz, az 1111H című memóriarekeszben lévő byte 88H a DE regiszterpár 2222H-t tartalmaz, és a 2222H című memóriarekeszben lévő byte 66H, a BC regiszterpár tartalma 7H, akkor az
LDI
utasítás végrehajtásának eredményeként a regiszterpárok és a memóriarekeszek tartalma a következőképpen alakul:
HL : (1111H) : DE : (2222H) : BC : |
1112H 88H 2223H 88H 6H |
Formátum: | OP kód |
Operandusok |
LDI |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
B0 |
Leírás:
A két byte hosszúságú utasítás a HL regiszterpár tartalma által megcímzett memóriarekeszben lévő byte-ot a DE regiszterpár tartalma által megcímzett memóriarekeszbe tölti, majd mindkét regiszterpár inkrementálódik, és a BC (byte számláló) regiszterpár dekrementálódik. Ha a dekrementálás eredményeként BC tartalma, zérus lesz, akkor az utasítás befejeződik. Ha viszont a BC tartalma nem zérus, akkor a programszámláló tartalma 2-vel dekrementálódik, és az utasítás megismétlődik. Megjegyezzük, hogy ha BC tartalma az utasítás végrehajtását megelőzően zérusra lett beállítva, az utasítás 64K-szor ciklikusan megismétlődik. Minden egyes byte átvitelét követően két felfrissítési ciklus zajlik le, és ilyenkor megszakítási kérelmek is érvényre juthatnak.
Ha BC<>0:
M ciklusok: 5 | T állapotok: 21 (4, 4, 3, 5, 5) | 4 MHz V.i.:5,25 |
Ha BC=0:
M ciklusok: 4 | T állapotok: 16 (4, 4, 3, 5) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
törlődik |
P/V: |
törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a HL regiszterpár 1111H-t, a DE regiszterpár 2222H-t, a BC regiszterpár 0003H-t tartalmaz, és a memóriarekeszek tartalma a következő:
(1111H) : (1112H) : (1113H) : |
88H 36H A5H |
(2222H) : (2223H) : (2224H) : |
66H 59H C5H |
akkor az
LDIR
utasítás végrehajtásának eredményeként a regiszterpárok, és a memóriarekeszek tartalma a következőképpen alakul:
HL : DE : BC : |
1114H 2225H 0000H |
|||
(1111H) : (1112H) : (1113H) : |
88H 36H A5H |
(2222H) : (2223H) : (2224H) : |
88H 36H A5H |
Formátum: | OP kód |
Operandusok |
NEG |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
44 |
Leírás:
Az utasítás az akkumulátor tartalmának 2-es komplemensét képezi, majd ezt az eredményt az akkumulátorba tölti. Ez a művelet azt jelenti, hogy az akkumulátor tartalma 0-ból kivonódik. Megjegyezzük, hogy 80H eredeti akkumulátor tartalom esetén az utasítás végrehajtása után az akkumulátor tartalma értelemszerűen változatlan marad.
M ciklusok: 5 | T állapotok: 8 (4, 4) | 4 MHz V.i.:2,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik. |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha alulcsordulás történt; egyébkért törlődik |
P/V: |
1-es állapotba kerül, ha a működés előtt az akkumulátor tartalma 80H volt; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
1-es állapotba kerül, ha a műkötés előtt az akkumulátor tartalma nem 00H volt; egyébként törlődik |
Példa:
Ha az akkumulátor tartalma:
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
akkor a
NEG
utasítás végrehajtásának eredményeként az akkumulátor tartalma:
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
lesz.
Formátum: | OP kód |
Operandusok |
NEG |
- |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
00 |
Leírás:
Az utasítás végrehajtása során a CPU semmiféle aritmetikai vagy logikai műveletet nem végez.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.:1,00 |
Formátum: | OP kód |
Operandusok |
OR |
s |
OR r | 1 |
0 | 1 | 1 | 0 | < |
r |
> |
|
OR n | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | F6 |
< | - | - | n | - | - | - | > | ||
OR (HL) | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | B6 |
OR (IX+d) | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | DD |
1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | B6 | |
< | - | - | d | - | - | - | > | ||
OR (IY+d) | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | FD |
1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | B6 | |
< | - | - | d | - | - | - | > |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja, amelyek a fenti tárgykódban a következők:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
Leírás:
Az utasítás az s operandus által specifikált byte, és az akkumulátor tartalma között bitenkénti logikai VAGY kapcsolatot hoz létre, és az eredmény az akkumulátorba kerül.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
OR r | 1 |
4 | 1,00 |
OR n | 2 |
7 (4, 3) | 1,75 |
OR (HL) | 2 |
7 (4, 3) | 1,75 |
OR (IX+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
OR (IY+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik. |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
törlődik |
Példa:
Ha a H regiszter tartalma 48H 01001000 , és az akkumulátoré 12H (00010010) , akkor az
OR H
utasítás végrehajtásának eredményeként az akkumulátor tartalma 5AH (01011010) lesz.
Formátum: | OP kód |
Operandusok |
OTDR |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
BB |
Leírás:
A periféria regisztert közvetve, regiszter indirekt címzési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során először a HL regiszterpár tartalma kerül a címbuszra. Az ilyen módon megcímzett memóriarekeszben lévő byte-ot a CPU átmenetileg tárolja, majd a byte számláló (B regiszter) tartalma dekrementálódik. Ezután a C regiszter tartalma a címbusz alsó nyolc bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria regiszter egyikét. Ugyanekkor a byte számlálóként felhasználható B regiszter dekrementált tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. Ezután az előzőleg a HL tartalma által megcímzett memóriarekeszből kiolvasott, majd átmenetileg a CPU-ban tárolt byte a C regiszter tartalma által kijelölt periféria regiszterbe töltődik. Ezt követően e HL regiszterpár tartalma dekrementálódik, és ha a már korábban dekrementált B regiszter tartalom nem zérus, akkor a programszámláló tartalma 2-vel dekrementálódik, és az utasítás megismétlődik. Ha viszont B tartalma zérus, az utasítás befejeződik. Megjegyezzük, hogy ha az utasítás végrehajtását megelőzően B tartalma 0-ra lett beállítva, 256 byte adat kitöltését végzi az utasítás. Minden egyes byte-átvitelt követően két memóriafrissítési ciklus zajlik le, és ugyanakkor programmegszakítási kérelmek is érvényre juthatnak.
Ha B<>0:
M ciklusok: 5 | T állapotok: 21 (4, 5, 3, 4, 5) | 4 MHz V.i.:5,25 |
Ha B=0:
M ciklusok: 4 | T állapotok: 16 (4, 5, 3, 4) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül |
H: |
ismeretlen |
P/V: |
ismeretlen |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a C regiszter tartalma 07H, a B regiszteré 03H, a HL regiszterpár 1000H-t tartalmaz, és a memóriarekeszek tartalma a következő:
Rekesz | Tartalom |
0FFEH 0FFFH 1000H |
51H A9H 03H |
akkor az
OTDR
utasítás végrehajtása után a, HL regiszterpár tartalma 0FFDH lesz, a B regiszter 0-t fog tartalmazni, és az eredetileg a memóriában lévő byte sorozat a következő sorrendben a 07H című periféria regiszterbe töltődik:
03H
A9H
51H
Formátum: | OP kód |
Operandusok |
OTIR |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
B3 |
Leírás:
A periféria regisztert közvetve, regiszter indirekt címzési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során először a HL regiszterpár tartalma kerül a címbuszra. Az ilyen módon megcímzett memóriarekeszben lévő byte-ot a CPU átmenetileg tárolja, majd a byte számláló (B regiszter) tartalma dekrementálódik. Ezután a C regiszter tartalma a címbusz alsó 8 bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria regiszter egyikét. Ugyanekkor a byte számlálóként felhasználható B regiszter dekrementált tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. Ezután az előzőleg a HL regiszterpár tartalma által megcímzett memóriarekeszből kiolvasott, majd átmenetileg a CPU-ban tárolt byte a C regiszter tartalma által kijelölt periféria regiszterbe töltődik. Ezt követően a HL regiszterpár tartalma inkrementálódik, és ha a már korábban dekrementált B regiszter tartalom nem zérus, akkor a, programszámláló tartalma 2-vel dekrementálódik, és az utasítás megismétlődik. Ha viszont L tartalma zérus, az utasítás befejeződik. Megjegyezzük, hogy ha az utasítás végrehajtását megelőzően B tartalma 0-ra lett beállítva, 256 byte adat kitöltését végzi az utasítás. Minden egyes byte-átvitelt követően két memóriafrissítési ciklus zajlik le, és ugyanekkor programmegszakítási kérelmek is érvényre juthatnak.
Ha B<>0:
M ciklusok: 5 | T állapotok: 21 (4, 5, 3, 4, 5) | 4 MHz V.i.:5,25 |
Ha B=0:
M ciklusok: 4 | T állapotok: 16 (4, 5, 3, 4) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül |
H: |
ismeretlen |
P/V: |
ismeretlen |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a C regiszter tartalma 07h, a B regiszteré 03H, a HL regiszterpár 1000H-t tartalmaz, és a memóriarekeszek tartalma a következő:
Rekesz | Tartalom |
1000H 1001H 1002H |
51H A9H 03H |
akkor az
OTIR
utasítás végrehajtása után a HL regiszterpár tartalma 1003H lesz, a B regiszter 0-t fog tartalmazni, és az eredetileg a memóriában lévő byte-sorozat a következő sorrendben a 07H című periféria regiszterbe töltődik:
51H
A9H
03H
Formátum: | OP kód |
Operandusok |
OUT |
(C),r |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
< |
r |
> |
0 |
0 |
1 |
Leírás:
A periféria regisztert közvetve, regiszter indirekt címzési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során a C regiszter tartalma, a címbusz alsó 8 bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria regiszter egyikét. Ugyanekkor a B regiszter tartalma a címbusz felső 8 bitjén (A8-tól A15-ig) van jelen. Ezután az r regiszterben lévő byte az adatbuszra kerül, és a C regiszter tartalma által kiválasztott periféria regiszterbe töltődik. Az r regiszter kódja a CPU bármely regiszterét az alábbi táblázat szerint azonosítja:
Regiszter |
r |
A |
111 |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M ciklusok: 3 | T állapotok: 12 (4, 4, 4) | 4 MHz V.i.:3,00 |
Példa:
Ha a C regiszter tartalma 01H, és a D regiszteré 5AH, akkor az
OUT (C),D
utasítás végrehajtásának eredményeként az 5AH byte a 01H című periféria regiszterbe töltődik.
Formátum: | OP kód |
Operandusok |
OUT |
(n),A |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
D3 |
< |
- |
- |
n |
- |
- |
- |
> |
Leírás:
A végrehajtás során az utasításnak a címbusz alacsony helyértékű bitjeire (A0-tól A7-ig) helyezett n operandusa a 256 lehetséges periféria regiszter egyikét választja ki. Ugyanekkor az akkumulátor (A regiszter) tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. Az akkumulátorban lévő byte az adatbuszra kerül, és a kiválasztott periféria regiszterbe töltődik.
M ciklusok: 3 | T állapotok: 11 (4, 3, 4) | 4 MHz V.i.:2,75 |
Példa:
Ha az akkumulátor tartalma 23H, az
OUT (01H),A
utasítás végrehajtásának eredményeként a 23H byte töltődik a 01H című periféria regiszterbe.
Formátum: | OP kód |
Operandusok |
OUTD |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
AB |
Leírás:
A periféria regisztert közvetve, regiszter indirekt címzési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során először a HL regiszterpár tartalma kerül a címbuszra. Az ilyen módon megcímzett memóriarekeszben lévő byte-ot a CPU átmenetileg tárolja, majd a byte számláló (B regiszter) tartalma dekrementálódik. Ezután a C regiszter tartalma a címbusz alsó 8 bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria regiszter egyikét. Ugyanekkor a byte számlálóként felhasználható B regiszter dekrementált tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. Ezután az előzőleg a HL tartalma által megcímzett memóriarekeszekből kiolvasott, majd átmenetileg a CPU-ban tárolt byte a C regiszter tartalma által kijelölt periféria regiszterbe töltődik. Végül a HL regiszterpár tartalma dekrementálódik.
M ciklusok: 4 | T állapotok: 16 (4, 5, 3, 4) | 4 MHz V.i.:4,00 |
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül, ha B-1=0; egyébként törlődik |
H: |
ismeretlen |
P/V: |
ismeretlen |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a C regiszter tatalma 07H, a B regiszteré 10H, a HL regiszterpár tartalma 1000H, és az 1000H című memóriarekesz tartalma 59H, akkor az
OUTD
utasítás végrehajtásának eredményeként a B regiszter 0FH-t, a HL regiszterpár 0FFFH-t fog tartalmazni, és az 59H töltődik a 07H című periféria regiszterbe.
Formátum: | OP kód |
Operandusok |
OUTI |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
A3 |
Leírás:
A periféria regisztert közvetve, regiszter indirekt cinkési móddal címző I/O utasítás, amelynél a periféria regiszter címét a C regiszter tartalmazza. A végrehajtás során először a HL regiszterpár tartalma kerül a címbuszra. Az ilyen módon megcímzett memóriarekeszben léve byte-ot a CPU átmenetileg tárolja,, majd a byte számláló (B regiszter) tartalma dekrementálódik. Ezután a C regiszter tartalma a címbusz alsó 8 bitjére (A0-tól A7-ig) kerül, és kiválasztja a 256 lehetséges periféria-regiszter egyikét. Ugyanekor a byte számlálóként felhasználható B regiszter dekrementált tartalma a címbusz magasabb helyértékű 8 bitjén (A8-tól A15-ig) van jelen. Ezután az előzőleg a HL tartalma által megcímzett memóriarekeszből kiolvasott, majd átmenetileg a CPU-ban tárolt byte a C regiszter tartalma által kijelölt periféria regiszterbe töltődik. Végül a HL regiszterpár tartalma inkrementálódik.
A jelzőbit regiszter érintett bitjei:
S: |
ismeretlen |
Z: |
1-es állapotba kerül, ha B-1=0; egyébként törlődik |
H: |
ismeretlen |
P/V: |
ismeretlen |
N: |
1-es állapotba kerül |
C: |
változatlan marad |
Példa:
Ha a C regiszter tartalma 07H, a B regiszteré 10H, a HL regiszterpár 1000H-t tartalmaz, és az 1000H című memóriarekesz tartalma 59H, akkor az
OUTI
utasítás végrehajtásának eredményeként a B regiszter 0FH-t, a HL regiszterpár 1001H-t fog tartalmazni, és az 59H töltődik a, 07H című periféria regiszterbe.
Formátum: | OP kód |
Operandusok |
POP |
IX |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
E1 |
Leírás:
Az utasítás az operatív memóriában elhelyezkedő LIFO veremtáron POP műveletet (a veremtár tetején elhelyezkedő, azaz oda utoljára betöltött 2 byte kiemelése) végez, és ennek eredményét az IX index regiszterbe tölt i. A veremtár aktuális mutató címet az SP reiszterpár tartalmazza. Az utasítás először az SP tartalma által kijelölt memóriarekesz tartalmát tölti az index regiszter alacsonyabb helyértékű byte-jába, majd az SP inkrementálódik, és az ilyen módon kijelölt következő memóriarekesz tartalma az IX index regiszter magasabb helyértékű byte-jába másolódik. Ezután az SP ismét inkrementálódik.
M ciklusok: 4 | T állapotok: 14 (4, 4, 3, 3) | 4 MHz V.i.:3,50 |
Példa:
Ha a veremtár mutató (SP) 1000H-t, az 1000H című memóriarekesz 55H-t, és az 1001H című memóriarekesz 33H-t tartalmaz, a
POP IX
utasítás végrehajtása után az IX index regiszter 3355H-t, és az SP 1002H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
POP |
IY |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
E1 |
Leírás:
Az utasítás az operatív memóriában elhelyezkedő LIFO veremtáron POP műveletet (a veremtár tetején elhelyezkedő, azaz az oda utoljára betöltött 2 byte kiemelése) végez, és ennek eredményét az IY index regiszterbe tölti. A veremtár aktuális tetejére mutató címet az SP regiszterpár tartalmazza. Az utasítás először az SP tartalma által kijelölt memóriarekesz tartalmát tölti az index regiszter alacsonyabb helyértékű byte-jába, majd az SP inkrementálódik, és az ilyen módon kijelölt következő memóriarekesz tartalma az IY index regiszter magasabb helyértékű byte-jába másolódik. Ezután az SP ismét inkrementálódik.
M ciklusok: 4 | T állapotok: 14 (4, 4, 3, 3) | 4 MHz V.i.:3,50 |
Példa:
Ha az SP regiszterpár 1000H-t, az 1000H című memóriarekesz 55H-t, és az 1001H című memóriarekesz 33H-t tartalmaz, a
POP IY
utasítás végrehajtása után az IY index regiszter 3355H-t, és az SP 1002H-t fog tartalmazni.
Művelet: qqH(SP+1), qq L(SP)
Formátum: | OP kód |
Operandusok |
POP |
qq |
1 |
1 |
q |
q |
0 |
0 |
0 |
1 |
Leírás:
Az utasítás az operatív memóriában elhelyezkedő LIFO veremtáron POP műveletet végez, és ennek eredményét a qq regiszterpárba tölti. A veremtár aktuális tetejére mutató címet az SP regiszterpár tartalmazza. Az utasítás először az SP tartalma által kijelölt memóriarekesz tartalmát tölti qq alacsonyabb helyértékű byte-jába, majd az SP inkrementálódik, és az ilyen módon kijelölt következő memóriarekesz tartalma a qq regiszterpár magasabb helyértékű byte-jába másolódik. Ezután az SP ismét inkrementálódik. A qq operandus a BC, DE, HL vagy AF regiszterpárokat definiálja, amelyek tárgykódban a következők:
Regiszterpár |
dd |
BC |
00 |
DE |
01 |
HL |
10 |
AF |
11 |
M ciklusok: 3 | T állapotok: 10 (4, 3, 3) | 4 MHz V.i.:2,50 |
Példa:
Ha az SP regiszterpár 1000H-t, az 1000H című memóriarekesz 55H-t, és az 1001H című memóriarekesz 33H-t tartalmaz, a
POP HL
utasítás végrehajtásának eredményeként a HL regiszterpár tartalma 3355H, az SP tartalma pedig 1002H lesz.
Formátum: | OP kód |
Operandusok |
PUSH |
IX |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
E5 |
Leírás:
Az utasítás az IX index regiszter tartalmát PUSH művelettel (2 byte betöltése a veremtár tetejére) az operatív memóriában elhelyezkedő LIFO veremtárba helyezi. A veremtár aktuális tetejére mutató címet az SP regiszterpár tartalmazza. Az utasítás először az SP tartalmát dekrementálja, és az index regiszter magasabb helyértékű 8 bitjét az így nyert cím által kijelölt memóriarekeszbe tölti, majd az SP ismét dekrementálódik, és az index regiszter alacsonyabb helyértékű byte-ja az SP regiszterpárban így kapott cím által definiált memóriarekeszbe másolódik.
M ciklusok: 3 | T állapotok: 15 (4, 5, 3, 3) | 4 MHz V.i.:3,75 |
Példa:
Ha, az IX index regiszter 2233H-t, és az SP regiszterpár 1007H-t tartalmaz, a
PUSH IX
utasítás végrehajtásának eredményeként az 1006H című memóriarekesz 22H-t, az 1005H című 33H-t fog tartalmazni, és az SP tartalma 1005H lesz.
Formátum: | OP kód |
Operandusok |
PUSH |
IY |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
E5 |
Leírás:
Az utasítás az IY index regiszter tartalmát PUSH művelettel (2 byte betöltése a veremtár tetejére) az operatív memóriában elhelyezkedő LIFO veremtárba helyezi. A veremtár aktuális tetejére mutató címet az SP regiszterpár tartalmazza. Az utasítás először az SP tartalmát dekrementálja, és az index regiszter magasabb helyértékű 8 bitjét az így nyert cím által kijelölt memóriarekeszbe tölti, majd az SP ismét dekrementálódik, és az index regiszter alacsonyabb helyértékű byte-ja az SP regiszterpárban így kapott cím által definiált memóriarekeszbe másolódik.
M ciklusok: 3 | T állapotok: 15 (4, 5, 3, 3) | 4 MHz V.i.:3,75 |
Példa:
Ha az IY index regiszter 2233H-t, és az SP regiszterpár 1007H-t tartalmaz, a
PUSH IY
utasítás végrehajtásának eredményeként az 1006H című memóriarekesz 22H-t, az 1005H című 33H-t fog tartalmazni, és az SP tartalma 1005H lesz.
Formátum: | OP kód |
Operandusok |
PUSH |
qq |
1 |
1 |
q |
q |
0 |
1 |
0 |
1 |
Leírás:
Az utasítás a qq regiszterpár tartalmát PUSH művelettel (2 byte betöltése a veremtár tetejére) az operatív memóriában elhelyezkedő LIFO veremtárba helyezi. A veremtár aktuális tetejére mutató címet az SP regiszterpár tartalmazza. Az utasítás először az SP tartalmát dekrementálja, és a qq, regiszterpár magasabb helyértékű 8 bitjét az így nyert cím által kijelölt memóriarekeszbe tölti, majd az SP ismét dekrementálódik, és a qq regiszterpár alacsonyabb helyértékű byte-ja az SP-ben így kapott cím által definiált memóriarekeszbe másolódik. A qq operandus a BC, DE, HL vagy AF regiszterpárokat jelenti, amelyek tárgykódban a következők:
Regiszterpár |
dd |
BC |
00 |
DE |
01 |
HL |
10 |
AF |
11 |
M ciklusok: 3 | T állapotok: 11 (5, 3, 3) | 4 MHz V.i.:2,75 |
Példa:
Ha az AF regiszterpár tartalma 2233H, és az SP regiszterpár 1007H-t tartalmaz, a
PUSH AF
utasítás végrehajtásának eredményeként az 1006H című memóriarekesz 22H-t, az 10O5H című memóriarekesz 33H-t, és az SP regiszterpár 1005H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
RES |
b,m |
A b operandus az m operandus (r, (HL), (IX+d) vagy (IY+d) bármelyike) által meghatározott byte egy bitjét (7-től 0-ig) definiálja, amint azt az ezzel az utasítással analóg SET utasításoknál meghatároztuk. Ezek a különböző lehetséges OP kód-operandus kombinációk a tárgykódban a következők lehetnek:
RES b,r | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
1 |
0 |
< |
b |
> |
< |
r |
> |
||
RES b,(HL) | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
1 |
0 |
< |
b |
> |
1 |
1 |
0 |
||
RES b,(IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
1 |
0 |
< |
b |
> |
1 |
1 |
0 |
||
RES b,(IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
1 |
0 |
< |
b |
> |
1 |
1 |
0 |
Törölt bit |
b |
Regiszter |
r |
|
0 1 2 3 4 5 6 7 |
000 001 010 011 100 101 110 111 |
B C D E H L A |
000 001 010 011 100 101 111 |
Leírás:
Az m operandus által meghatározott byte-nak a b operandus által meghatározott bitje törlődik.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
RES r | 2 |
8 (4 , 4) | 2,00 |
RES (HL) | 4 |
15 (4, 4, 4, 3) | 3,75 |
RES (IX+d) | 6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
RES (IY+d) | 6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
Példa:
A
RES 6,D
utasítás végrehajtásának eredményeként a D regiszter 6-os bitje törlődik. (A D regiszter 0-ás bitje a legalacsonyabb helvértékű bit).
Formátum: | OP kód |
Operandusok |
RET |
- |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
C9 |
Leírás:
Az utasítás a vezérlést az eredeti programnak adja vissza. Végrehajtása sarán az előzőleg CALL utasítással a veremtár tetejére mentett eredeti programszámláló (PC) tartalmat POP művelettel kiemeli, és visszatölti a PC-be. Végrehajtásakor először az SP tartalma által kijelölt memóriarekeszben lévő byte másolódik át a PC alacsonyabb helyértékű 8 bitjébe, majd az SP inkrementálásával kapott memóriacímen elhelyezkedő byte töltődik a PC magasabb helyértékű 8 bitjébe. (Az SP másodszor inkrementálódik). A CPU következő gépi ciklusa a következő OP kódot már az ilyen módon a PC-ben jelenlévő cím által meghatározott memóriarekeszből kapja.
M ciklusok: 3 | T állapotok: 10 (4, 3, 3) | 4 MHz V.i.:2,55 |
Példa:
Ha a programszámláló tartalma 3535H, az SP tartalma 2000H, a 2000H című memóriarekesz tartalma B5H, és a 2001H című memóriarekeszé 18H, akkor a
RET
utasítás végrehajtása, után az SP tartalma 2002H, és a programszámláló tartalma 18B5H lesz, amely értelemszerűen a következő végrehajtandó OP kód címét jelenti.
Formátum: | OP kód |
Operandusok |
RET |
cc |
1 |
1 |
< |
cc |
> |
0 |
0 |
0 |
Leírás:
Ha a cc feltétel teljesül, az utasítás a vezérlést az eredeti programnak adja vissza. Végrehajtása során az előzőleg CALL utasítással a veremtár tetejére mentett eredeti programszámláló (PC) tartalmat POP művelettel kiemeli, és visszatölti a PC-be. Végrehajtáskor először az SP tartalma által kijelölt memóriarekeszben lévő byte másolódik át a PC alacsonyabb helyértékű 8 bitjébe, majd az SP inkrementálásával kapott memóriacímen elhelyezkedő byte töltődik a PC magasabb helyértékű 8 bitjébe. (Az SP másodszor inkrementálódik). A CPU következő gépi ciklusa a következő OP kódot már az ilyen módon a PC-ben jelenlévő cím, által meghatározott memóriarekeszből kapja. Ha a cc feltétel nem teljesül, a PC a szokott módon inkrementálódik, és a program a sorrendben következd utasítás végrehajtásával folytatódik. A cc feltétel programozása az F regiszter valamelyik bitjének kijelölésével történhet. Az ilyen módon kijelölhető 8 feltételt az alábbi táblázat definiálja:
cc | Feltétel | Aktuális bit | |
000 001 010 011 100 101 110 111 |
NZ Z NC C PO PE P M |
nem zérus zérus nincs átvitel átvitel páratlan paritás páros paritás pozitív előjel negatív előjel |
Z Z C C P/V P/V S S |
Ha cc teljesül:
M ciklusok: 3 | T állapotok: 10 (4, 3, 3) | 4 MHz V.i.:2,55 |
Ha cc nem teljesül:
M ciklusok: 1 | T állapotok: 5 | 4 MHz V.i.:1,25 |
Példa:
Ha az S bit 1-es állapotban van, a, programszámláló tartalma 3535H, az SP tartalma 2000H, a 2000H című memóriarekeszben lévő byte B5H, és a 2001H című memóriarekesz tartalma 18H, akkor a
RET M
utasítás végrehajtásának eredményeként az SP tartalma 2002H lesz, a programszámláló tartalma pedig 18B5H, amely értelemszerűen a következő végrehajtandó OP kód címét jelenti.
Formátum: | OP kód |
Operandusok |
RETI |
- |
Leírás:
Az utasítást megszakítást kiszolgáló rutin végén használjuk azért, hogy:
M ciklusok: 4 | T állapotok: 14 (4, 4, 3, 3) | 4 MHz V.i.:3,50 |
Példa:
Adott két megszakítást okozó eszköz, A és E, amelyek úgy vannak, megszakítási láncba kapcsolva, hogy A-nak nagyobb a prioritása.
B programmegszakítást generál, ami elfogadásra is kerül. (B-nek IEO engedélyező kimenete törlődik, és ezáltal mindaddig, amíg B kiszolgálása tart, az összes alacsonyabb prioritású megszakításkérés blokkolódik). Ezután A kér programmegszakítást, ezáltal felfüggesztve B kiszolgálását. (A-nak az IE0 programmegszakítást engedélyező kimenete törlődik, jelezve, hogy egy magasabb prioritású eszköz kiszolgálása van folyamatban). Az A rutin befejezésekor végrehajtott RETI utasítás ismét 1-es állapotba helyezi A-nak a programmegszakítást engedélyező IEO kimenetét, és így lehetővé teszi, hogy a B-t kiszolgáló rutin folytatódjék. A B rutin befejezésekor kiadott újabb RETI utasítás a B eszköz megszakítást engedélyező IEO kimenetét is 1-es állapotba teszi, és ilyen módon biztosítja az alacsonyabb prioritású programmegszakítások érvényre jutását is.
Formátum: | OP kód |
Operandusok |
RETN |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
45 |
Leírás:
A nem maszkolható programmegszakítást kiszolgáló rutinok végén használt utasítás. Olyan feltétel nélküli vezérlésátadást eredményez, amely funkciójában a RET utasítással azonos. A programszámláló (PC) korábbi veremtárba mentett tartalma POP művelettel kiemelődik, és a PC-be kerül vissza. Az SP tartalma által kijelölt memóriarekeszben lévő byte a PC alacsonyabb helyértékű 8 bitjébe töltődik, majd az SP inkrementálásával kijelölt memóriarekesz 8 bitje a PC magasabb helyértékű byte-jába másolódik, és az SP ismét inkrementálódik. A vezérlés ilyen módon visszaadódik az eredeti programhoz, és a CPU következő gépi ciklusa a következő OP kódot már a PC által kijelölt memóriarekeszből fogja kiemelni. A vémrehajtás során IFF2 tartalma visszatöltődik IFF1-be, és így az NMI (nem maszkolható megszakítás) elfogadását megelőző állapotot veszi fel.
M ciklusok: 4 | T állapotok: 14 (4, 4, 3, 3) | 4 MHz V.i.:3,50 |
Példa:
Ha egy nem maszkolható megszakítás (NMI) vételekor az SP tartalma 1000H, és a programszámláló 1A45H-t tartalmaz, a CPU a következő utasítást figyelmen kívül hagyja, és helyette egy, a 0066H címre irányuló "restart" műveletet hajt végre. Ekkor a programszámláló 1A45H-s aktuális tartalma a külső veremtár 0FFFH és 0FFEH című rekeszeibe kerül. Az első veremtár a PC magasabb helyértékű byte-ját, míg a második az alacsonyabb helyértékű 8 bitet tartalmazza, és a programszámlálóba a 0066H cím. töltődik. Ezen a címen egy olyan megszakítás kiszolgáló rutin kezdődik, amely RETN utasítással fejeződik be. A RETN végrehajtásakor az eredeti programszámláló tartalom a veremtárból kiemelődik (elsőként az alacsonyabb helyértékű byte), és ezáltal az SP tartalma újra az eredeti 1000H értéket veszi fel. A program futása ott folytatódik, ahol abbamaradt, vagyis az 1A45H címen elhelyezett OP kód kiemelésével.
Formátum: | OP kód |
Operandusok |
RL |
m |
Az m operandus r,(HL), (IX+d) vagy (IY+d) bórmelyike lehet, hasonlóan, mint az RLC utasításoknál. A lehetséges 0P kód-operandus kombinációk tárgykódban a következők:
RL r | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
0 |
1 |
0 |
< |
r |
> |
||
RL (HL) | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
16 | |
RL (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
16 | |
RL (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
16 |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja, amelyek tárgykódban a, következők:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az m operandus tartalma a CY átvitel biten (a jelzőbit regiszter C bitje) keresztül egy helyértékkel balra tolódik. A 0-ás bit tartalma az 1-es bitbe másolódik; az 1-es bit előző tartalma pedig a 2-es bitbe, stb. A 7-es bit az átvitel bitbe, és az átvitel bit előző tartalma. pedig a 0-ás bitbe másolódik. (A 0-ás bit az m operandus legkisebb helyértékű bitje).
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
RL r | 2 |
8 (4 , 4) | 2,00 |
RL (HL) | 4 |
15 (4, 4, 4, 3) | 3,75 |
RL (IX+d) | 6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
RL (IY+d) | 6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha, az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
az m operandus által meghatározott byte 7-es bitjének tartalmát veszi fel |
Példa:
Ha a D regiszter, és az átvitel bit tartalma
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
az
RL D
utasítás végrehajtásának eredményeként a D regiszter, és az átvitel bit tartalma a következő lesz:
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
Formátum: | OP kód |
Operandusok |
RLA |
- |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
17 |
Leírás:
Az akkumulátor (A regiszter) tartalma a CY átvitel biten (C bit) keresztül egy helyértékkel balra tolódik. A 0-ás bit tartalma az 1-es bitbe kerül, az 1-es bit előző tartalma pedig, a 2-es bitbe, stb. A 7-es bit az átvitel bitbe, az átvitel bit előző tartalma pedig a 0-ás bitbe másolódik. A 0-ás bit a legalacsonyabb helyértékű bit.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.:1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
törlődik |
P/V: |
változatlan marad |
N: |
törlődik |
C: |
az akkumulátor 7-es bitjének tartalmát veszi fel |
Példa:
Ha az akkumulátor, és az átvitel bit tartalma
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
akkor az
RLA
utasítás végrehajtásának eredményeként az akkumulátor, és az átvitel bit tartalma a következő lesz:
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
Formátum: | OP kód |
Operandusok |
RLC |
(HL) |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
06 |
Leírás:
A HL regiszterpár tartalma által specifikált memóriarekesz tartalma a CY átvitel bit (C bit) megkerülésével egy helyértékkel balra tolódik. A 0-ás bit tartalma az 1-es bitbe kerül, az 1-es bit előző tartalma pedig a 2-es bitbe, stb. A 7-es bit tartalma az átvitel bitbe, és a 0-ás bitbe másolódik. A 0-ás bit a byte legkisebb helyértékű bitje.
M ciklusok: 4 | T állapotok: 15 (4, 4, 4, 3) | 4 MHz V.i.:3,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
a (HL) operandus által meghatározott byte 7-es bitjének tartalmát veszi fel |
Példa:
Ha a HL regiszterpár tartalma 2828H, és a 2828H című memóriarekesz tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
Akkor az
RLC (HL)
utasítás végrehajtásának eredményeként a 2828H című memóriarekesz, és az átvitel bit tartalma a következő lesz:
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
Formátum: | OP kód |
Operandusok |
RLC |
(IX+d) |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
< |
- |
- |
d |
- |
- |
- |
> |
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
06 |
Leírás:
Az IX index regiszter tartalma, és a 2-es komplemensű kódban értelmezett d egész szám összege által specifikált memóriarekesz tartalma a CY átvitel bit (C bit) megkerülésével egy helyértékkel balra tolódik. A 0-ás bit tartalma az 1-es bitbe kerül, az 1-es bit előző tartalma pedig a 2-es bitbe, stb. A 7-es bit tartalma, az átvitel bitbe, és a 0-ás bitbe másolódik. A 0-ás bit a byte legkisebb helyértékű bitje.
M ciklusok: 6 | T állapotok: 23 (4, 4, 3, 5, 4, 3) | 4 MHz V.i.:5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
az (IX+d) által kijelölt byte 7-es bitjének tartalmát veszi fel |
Példa:
Ha az IX index regiszter tartalma 1000H, és az 1002H című memóriarekesz tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
akkor az
RLC (IX+2H)
utasítás végrehajtása után az 1002H című memóriarekesz, és az átvitel bit tartalma a következő lesz:
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
Formátum: | OP kód |
Operandusok |
RLC |
(IY+d) |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
< |
- |
- |
d |
- |
- |
- |
> |
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
06 |
Leírás:
Az IY index regiszter tartalma, és a 2-es komplemensű kódban értelmezett d egész szám összege által specifikált memóriarekesz tartalma a CY átvitel bit (C bit) megkerülésével egy helyértékkel balra tolódik. A 0-ás bit tartalma az 1-es bitbe kerül, az 1-es bit előző tartalma pedig a 2-es bitbe, stb. A 7-es bit tartalma az átvitel bitbe, és a 0-ás bitbe másolódik. A 0-ás bit a byte legkisebb helyértékű bitje.
M ciklusok: 6 | T állapotok: 23 (4, 4, 3, 5, 4, 3) | 4 MHz V.i.:5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
az (IY+d) által kijelölt byte 7-es bitjének tartalmát veszi fel |
Példa:
Ha az IY index regiszter tartalma 1000H, és az 1002H című memóriarekesz tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
akkor az
RLC (IY+2H)
utasítás végrehajtásának eredményeként az 1002H című memóriarekesz, és az átvitel bit tartalma a következő lesz:
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
Formátum: | OP kód |
Operandusok |
RLC |
r |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
0 |
0 |
0 |
< |
r |
> |
Leírás:
Az r operandus által meghatározott regiszter tartalma a CY átvitel bit megkerülésével egy helyértékkel balra tolódik. A 0-ás bit tartalma az 1-es bitbe kerül, az 1-es bit előző tartalma pedig a 2-es bitbe, stb. A 7-es bit tartalma az átvitel bitbe, és a 0-ás bitbe kerül. Az r operandus tárgykódban a következő lehet:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Megjegyzés: A 0-ás bit a byte legkisebb helyértékű bitje.
M ciklusok: 2 | T állapotok: 8 (4, 4) | 4 MHz V.i.:2,00 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
az r által specifikált regiszter 7-es bitjének tartalmát veszi fel |
Példa:
Ha az r regiszter tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
Akkor az
RLC r
utasítás végrehajtásának eredményeként az r regiszter, és az átvitel bit tartalma a következő lesz:
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
Formátum: | OP kód |
Operandusok |
RLCA |
- |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
07 |
Leírás:
Az akkumulátor (A regiszter) tartalma a CY átvitel bit megkerülésével egy helyértékkel balra tolódik. A 0-ás bit tartalma az 1-es bitbe kerül, az 1-es bit előző tartalma a 2-es bitbe, stb. A 7-es bit tartalma az átvitel bitbe, és a 0-ás bitbe másolódik. (A 0-ás bit a byte legkisebb helyértékű bitje).
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.:1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
törlődik |
P/V: |
változatlan marad |
N: |
törlődik |
C: |
az akkumulátor 7-es bitjének tartalmát veszi fel |
Példa:
Ha az akkumulátor tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
akkor az
RLCA
utasítás végrehajtásának eredményeként az akkumulátor, és az átvitel bit tartalma a következő lesz:
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
Formátum: | OP kód |
Operandusok |
RLD |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
6F |
Leírás:
A HL tartalma által specifikált memóriarekesz négy alacsonyabb helyértékű bitjének (3, 2, 1 és 0 bit) tartalma ugyanezen byte négy magasabb helyértékű (7, 6, 5 és 4) bitjébe töltődik. A magasabb helyértékű négy bit eredeti tartalma az akkumulátor (A regiszter) alacsonyabb helyértékű négy bitjébe töltődik. Az akkumulátor alacsonyabb helyértékű négy bitjének eredeti tartalma viszont a HL tartalma által specifikált memóriarekesz alacsonyabb helyértékű négy bitjébe kerül. Az akkumulátor magasabb helyértékű négy bitjének tartalma változatlan marad.
M ciklusok: 5 | T állapotok: 18 (4, 4, 3, 4, 3) | 4 MHz V.i.:4,50 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha. a művelet után az akkumulátor tartalma negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha a művelet után az akkumulátor tartalma nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül, ha az akkumulátor tartalma páros paritású a művelet után; egyébként törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a HL regiszterpár tartalma 5000H, az akkumulátor, és az 5000H című memóriarekesz tartalma pedig
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Accumulator |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
(5000H) |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
akkor az
RLD
utasítás végrehajtásának eredményeként az akkumulátor, és az 5000H című memóriarekesz tartalma a következő lesz:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Accumulator |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
(5000H) |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
Formátum: | OP kód |
Operandusok |
RR |
m |
Az m operandus r, (HL), (IX+d) vagy (IY+d) bármelyike lehet, úgymint az analóg RLC utasításoknál A különböző lehetséges OP kód-operandus kombinációk tárgykódban a következők lehetnek:
RR r | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
0 |
1 |
1 |
< |
r |
> |
||
RR (HL) | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1E | |
RR (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1E | |
RR (IY+d) | 0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1E |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1E |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja a következő módon:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az m operandus tartalma a CY átvitel biten keresztül egy helyértékkel jobbra tolódik. A 7-es bit tartalma a 6-os bitbe kerül, a 6-os bit előző tartalma pedig az 5-ös bitbe, stb. A 0-ás bit tartalma az átvitel bitbe, az átvitel bit előző tartalma pedig a 7-es bitbe kerül. A 0-ás bit a byte legkisebb helyértékű bitje.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
RR r |
2 |
8 (4, 4) | 2,00 |
RR (HL) |
4 |
15 (4, 4, 4, 3) | 3,75 |
RR (IX+d) |
6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
RR (IY+d) |
6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
S: |
1-es állapotba kerül, ha. a művelet után az akkumulátor tartalma negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha a művelet után az akkumulátor tartalma nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetében; egyébként törlődik |
N: |
törlődik |
C: |
az m operandus által meghatározott byte 0-ás bitjének tartalmát veszi fel |
Példa:
Ha a HL regiszterpár tartalma 4343H, és a 4343H című memóriarekesz, valamint az átvitel bit tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
C |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
akkor az
RR (HL)
utasítás végrehajtásának eredményeként a 4343H című memóriarekesz, és az átvitel bit tartalma a következő lesz:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
C |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
Formátum: | OP kód |
Operandusok |
RRA |
- |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1F |
Leírás:
Az akkumulátor (A regiszter) tartalma, a CY átvitel biten keresztül egy helyértékkel jobbra tolódik. A 7-es bit tartalma a 6-os bitbe kerül, a 6-os bit előző tartalma az 5-ös bitbe, stb. A 0-ás bit tartalma az átvitel bitbe, az átvitel bit előző tartalma pedig a 7-es bitbe kerül A 0-ás bit a byte legkisebb helyértékű bitje.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.:1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
törlődik |
P/V: |
változatlan marad |
N: |
törlődik |
C: |
az akkumulátor 0-ás bitjének tartalmát veszi fel |
Példa:
Ha az akkumulátor, és az átvitel bit tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
C |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
akkor az
RRA
utasítás végrehajtásának eredményeként a akkumulátor, és az átvitel bit tartalma a következő lesz:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
C |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
Formátum: | OP kód |
Operandusok |
RRC |
m |
Az m operandus r, (HL), (IX+d) vagy (IY+d) bármelyike lehet, úgy, mint az RLC utasításoknál. A különböző OP kód-operandus kombinációk a következők lehetnek:
RRC r | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
0 |
0 |
1 |
< |
r |
> |
||
RRC (HL) | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0E | |
RRC (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0E | |
RRC (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0E |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja az alábbi módon:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az m operandus tartalma a CY átvitel bit megkerülésével egy helyértékkel jobbra tolódik. A 7-es bit tartalma a 6-os bitbe kerül, a. 6-os bit előző tartalma pedig az 5-ös bitbe, stb. A 0-ás bit tartalma az átvitel bitbe, és a 7-es bitbe kerül. A 0-ás bit a byte legkisebb helyértékű bitje.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
RR r |
2 |
8 (4, 4) | 2,00 |
RR (HL) |
4 |
15 (4, 4, 4, 3) | 3,75 |
RR (IX+d) |
6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
RR (IY+d) |
6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla, egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
az m operandus által meghatározott byte 0-ás bitjének tartalommát veszi fel |
Példa:
Ha az A regiszter tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
akkor az
RRC A
utasítás végrehajtásának eredményeként az A regiszter, és az átvitel bit tartalma a következő lesz:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
C |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
Formátum: | OP kód |
Operandusok |
RRCA |
- |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0F |
Leírás:
Az akkumulátor (A regiszter) tartalma a CY átvitel bit megkerülésével egy helyértékkel jobbra tolódik. A 7-es bit tartalma a 6-os bitbe kerül, a 6-os bit előző tartalma pedig az 5-ös bitbe, stb. A 0-ás bit tartalma az átvitel bitbe, és a 7-es bitbe kerül. A 0-ás bit a byte legkisebb helyértékű bitje.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.:1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
törlődik |
P/V: |
változatlan marad |
N: |
törlődik |
C: |
az akkumulátor 0-ás bitjének tartalmát veszi fel |
Példa:
Ha az akkumulátor tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
akkor az
RRCA
utasítás végrehajtásnak eredményeként az akkumulátor, és az átvitel bit tartalma a következő lesz:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
C |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
Formátum: | OP kód |
Operandusok |
RRD |
- |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
67 |
Leírás:
A HL tartalma által specifikált memóriarekesz négy alacsonyabb helyértékű bitjének (3, 2, 1 és 0 bit) tartalma az akkumulátor (A regiszter) alacsonyabb helyértékű négy bitjébe kerül. Az akkumulátor regiszter alacsonyabb helyértékű négy bitiének eredeti tartalma a HL tartalma által specifikált memóriarekesz négy magasabb helyértékű bitjébe kerül át, míg ugyanezen négy bit eredeti tartalma ennek a byte-nak a négy alacsonyabb helyértékű bitjébe töltődik át. Az akkumulátor magasabb helyértékű négy bitjének tartalma érintetlen marad.
M ciklusok: 5 | T állapotok: 18 (4, 4, 3, 4, 3) | 4 MHz V.i.:4,50 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha a művelet után az akkumulátor tartalma negatív, egyébként törlődik |
Z: |
1-es állapotba kerül, ha a művelet után az akkumulátor tartalma nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül, ha a művelet után az akkumulátor tartalma páros paritású; egyébként törlődik |
N: |
törlődik |
C: |
változatlan marad |
Példa:
Ha a HL regiszterpár tartalma 5000H, és az akkumulátor, valamint az 5000H című memóriarekesz tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Accumulator |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
(5000H) |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
Akkor az
RRD
Utasítás végrehajtása után az akkumulátor, és az 5000H című memóriarekesz tartalma a következő lesz:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Accumulator |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
(5000H) |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Formátum: | OP kód |
Operandusok |
RST |
p |
1 |
1 |
< |
t |
> |
1 |
1 |
1 |
Leírás:
A programszámláló (PC) aktuális tartalma az operatív memóriában elhelyezkedő veremtárba kerül, majd a PC-be a p operandus által meghatározott, az operatív memória 0-ás lapján (legalsó 256 byte-ján) lévő 8 speciális rendeltetésű memóriarekesz címének egyike töltődik.
A program végrehajtása ezután a PC megváltoztatott tartalma által specifikált OP kód kiemelésével folytatódik. A művelet végrehatása során először az SP tartalma, dekrementálódik, és a PC magasabb helyértékű byte-ja az így nyert cím által kijelölt memóriarekeszbe töltődik. Ezt az SP ismételt dekrementálása, majd a PC alacsonyabb helyértékű byte-iának az új SP tartalommal megcímzett memóriarekeszbe másolása követi. A "Restart" utasítás az alábbi táblázatban lévő 8 cím egyikére történő ugrást biztosítja. A p operandus a táblázat megfelelő t kódjával együtt alakul tárgykóddá. Megjegyzés: miután az érintett címek mindegyike a memória 0-ás lapján helyezkedik el, az utasítás végrehajtása, során a PC magasabb helyértékű byte-ja értelemszerűen 00H értéket vesz fel, míg a PC alacsonyabb helyértékű 8 bitjébe az alábbi táblázat p oszlopának megfelelő eleme másolódik:
p |
t |
00H 08H 10H 18H 20H 28H 30H 38H |
000 001 010 011 100 101 110 111 |
Ez az utasítás tehát abban különbözik a CALL utasítástól, hogy csak 1 bájtos, végrehajtási ideje is rövidebb, de csak 8 féle címre lehet vele ugrani.
Az RST utasítások használhatók a 0. és 1. megszakítási módokban a megszakítást feldolgozó szubrutinok hívására.
M ciklusok: 3 | T állapotok: 11 (5, 3, 3) | 4 MHz V.i.:2,75 |
Példa:
Ha a programszámláló tartalma 15B3H, akkor az
RST 18H (1101111 tárgykód)
utasítás végrehajtásának eredményeként a PC a következő OP kódra mutató 0018H címet fogja tartalmazni.
Formátum: | OP kód |
Operandusok |
SBC |
A,s |
Az s operandus r, n, (HL), (IX+d) vagy (IY+d) bármelyike lehet, úgy, mint az ADD utasításoknál. A különböző OP kód-operandus kombinációk a következők lehetnek:
SBC A,r | 1 |
0 |
0 |
1 |
1 |
< |
r |
> |
|
SBC A,n | 1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
DE |
< |
- |
- |
n |
- |
- |
- |
> |
||
SBC A,(HL) | 1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
9E |
SBC A,(IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
9E | |
< |
- |
- |
d |
- |
- |
- |
> |
||
SBC A,(IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
9E | |
< |
- |
- |
d |
- |
- |
- |
> |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja az alábbi módon:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az s operandus az átvitel bittel együtt kivonódik az akkumulátor tartalmából; és az eredmény az akkumulátorba kerül.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
SBC a,r |
1 |
4 | 1,00 |
SBC A,n |
2 |
7 (4, 3) | 1,75 |
SBC (HL) |
2 |
7 (4, 3) | 1,75 |
SBC (IX+d) |
5 |
19 (4, 4, 3, 5, 3) | 4,75 |
SBC (IY+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
Példa:
Ha az akkumulátor 16H-t tartalmaz, az átvitel bit tartalma 1, a HL regiszterpár 3433H-t, és a 3433H című memóriarekesz 05H-t tartalmaz, akkor az
SBC A,(HL)
utasítás végrehajtásának eredményeként az akkumulátor 10H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
SBC |
HL,ss |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
ED |
0 |
1 |
s |
s |
0 |
0 |
1 |
0 |
Leírás:
Az ss regiszterpár tartalma (a BC, DE, HL vagy SP regiszterpárok bármelyike) az átvitel bittel együtt kivonódik a. HL regiszterpár tartalmából, és az eredmény a HL-ben tárolódik, Az ss operandus tárgykódban a következő lehet:
Regiszterpár |
dd |
BC |
00 |
DE |
01 |
HL |
10 |
AF |
11 |
M ciklusok: 4 | T állapotok: 15 (4, 4, 4, 3) | 4 MHz V.i.:3,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
Példa:
Ha a HL regiszterpár tartalma 9999H, a DE regiszterpáré 1111H, és az átvitel bit tartalma 1, akkor az
SBC HL,DE
Utasítás végrehajtásának eredményeként a HL tartalma 8887H lesz.
Formátum: | OP kód |
Operandusok |
SCF |
- |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
37 |
Leírás:
A jelzőbit regiszter C bitje 1-es állapotba kerül.
M ciklusok: 1 | T állapotok: 4 | 4 MHz V.i.:1,00 |
A jelzőbit regiszter érintett bitjei:
S: |
változatlan marad |
Z: |
változatlan marad |
H: |
törlődik |
P/V: |
változatlan marad |
N: |
törlődik |
C: |
1-es állapotba kerül |
Formátum: | OP kód |
Operandusok |
SET |
b,(HL) |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
1 |
1 |
< |
b |
> |
1 |
1 |
0 |
Leírás:
A HL regiszterpár tartalma által megcímzett memóriarekesz b operandus által kijelölt bitje (0-tól 7-es bitig bármelyik) 1-be lesz beállítva. A b operandus tárgykódban a következő lehet:
1-be állított bit |
b |
0 |
000 001 010 011 100 101 110 111 |
M ciklusok: 4 | T állapotok: 15 (4, 4, 4, 3) | 4 MHz V.i.:3,75 |
Példa:
Ha a HL regiszterpár tartalma 3000H, akkor a
SET 4,(HL)
utasítás végrehajtása után a 3000H című memóriarekeszben lévő 4-es bit 1-es tartalmat vesz fel. (A 3000H című memóriarekeszben a 0-ás bit a legkisebb helyértékű bit).
Formátum: | OP kód |
Operandusok |
SET |
b,(IX+d) |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
< |
- |
- |
d |
- |
- |
- |
> |
|
1 |
1 |
< |
b |
> |
1 |
1 |
0 |
Leírás:
Az IX regiszterpár (IX index regiszter) tartalmának a d 2-es komplemensű kódban adott egész számmal alkotott összege által kijelölt memóriarekesznek a b operandus által specifikált bitje 1-es állapotba kerül.
1-be állított bit |
b |
0 |
000 001 010 011 100 101 110 111 |
M ciklusok: 6 | T állapotok: 23 (4, 4, 3, 5, 4, 3) | 4 MHz V.i.:5,75 |
Példa:
Ha az index regiszter tartalma 2000H, a
SET 0,(IX+3H)
utasítás végrehajtásának eredményeként a 2003H című memóriarekesz 0-ás bitje 1-es tartalmat vesz fel. (A 2003H című memóriarekeszben a 0-ás bit a legkisebb helyértékű bit).
Formátum: | OP kód |
Operandusok |
SET |
b,(IY+d) |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
< |
- |
- |
d |
- |
- |
- |
> |
|
1 |
1 |
< |
b |
> |
1 |
1 |
0 |
Leírás:
Az IY regiszterpár (IY index regiszter) tartalmának a d 2-es komplemensű kódban adott egész számmal alkotott összege által
kijelölt memóriarekesznek a b oberandus által specifikált bitje 1-es állapotba kerül. A b operaindus jelentése a következő:
1-be állított bit |
b |
0 |
000 001 010 011 100 101 110 111 |
M ciklusok: 6 | T állapotok: 23 (4, 4, 3, 5, 4, 3) | 4 MHz V.i.:5,75 |
Példa:
Ha az IY index regiszter tartalma 2000H, a
SET 0,(IY+3H)
utasítás végrehajtásának eredményeként a 2003H című. memóriarekesz 0-ás bitje 1-es tartalmat vesz fel. (A 2003H című memóriarekeszben a 0-ás bit a legkisebb helyértékű bit).
Formátum: | OP kód |
Operandusok |
SET |
b,r |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
1 |
1 |
< |
b |
> |
< |
r |
> |
Leírás:
Az r regiszter (a B, C, D, E, H, L vagy A regiszterek bármelyike) b bitje (a 7-estől a 0-ásig bármelyik bit) 1-es állapotba kerül. A b és r operandusok jelentése:
Bit |
b |
Regiszter |
r |
|
0 1 2 3 4 5 6 7 |
000 001 010 011 100 101 110 111 |
B C D E H L A |
000 001 010 011 100 101 111 |
M ciklusok: 2 | T állapotok: 8 (4, 4) | 4 MHz V.i.:2,00 |
Példa:
A
SET 4,A
utasítás végrehajtása után az A regiszter 4-es bitje 1-es tartalmat vesz fel. (A 0-ás bit a legkisebb helyértékű bit).
Formátum: | OP kód |
Operandusok |
SLA |
m |
Az m operandus r, (HL), (IX+d) vagy (IY+d) bármelyike lehet, úgy, mint az RLC utasításoknál. A különböző lehetséges 0P kód-operandus kombinációk az alábbiak:
SLA r | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
1 |
0 |
0 |
< |
r |
> |
||
SLA (HL) | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
26 | |
SLA (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
26 | |
SLA (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
26 |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja az alábbiak szerint:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az utasítás az m operandus tartalmán egy helyértékkel balra történő aritmetikai léptetést végez. A 0-ás bitbe 0 kerül, míg a 0-ás bit eredeti tartalma, az 1-es bitbe kerül, az 1-es bit eredeti tartalma a 2-es bitbe töltődik, stb. Végül a 7-es bit az átvitel bitbe kerül. A 0-ás bit a legkisebb helyértékű.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
SLA r |
2 |
8 (4, 4) | 2,00 |
SLA (HL) |
4 |
15 (4, 4, 4, 3) | 3,75 |
SLA (IX+d) |
6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
SLA (IY+d) | 6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
az m operandus által meghatározott byte 7-es bitjének tartalmát veszi fel |
Példa:
Ha az L regiszter tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
akkor az
SLA
utasítás végrehajtásának eredményeként az L regiszter, és az átvitel bit tartalma a következő lesz:
C |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
Formátum: | OP kód |
Operandusok |
SRA |
m |
Az m operandus r, (HL), (IX+d) vagy (IY+d) bármelyike lehet, úgy, mint az RLC utasításoknál. A különböző OP kód-operandus kombinációk az alábbiak:
SRA r | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
1 |
0 |
1 |
< |
r |
> |
||
SRA (HL) | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
2E | |
SRA (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
2E | |
SRA (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
2E |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja az alábbiak szerint:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az utasítás az m operandus tartalmán egy helyértékkel jobbra történő aritmetikai léptetést végez. A 7-es bit tartalma a 6-os bitbe töltődik, a 6-os bit eredeti tartalma az 5-ös bitbe kerül, stb. A 0-ás bit tartalma az átvitel bitbe kerül, és a 7-es bit eredeti tartalma változatlan marad. A 0-ás bit a legkisebb helyértékű bit.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
SRA r |
2 |
8 (4, 4) | 2,00 |
SRA (HL) |
4 |
15 (4, 4, 4, 3) | 3,75 |
SRA (IX+d) |
6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
SRA (IY+d) | 6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
az m operandus által meghatározott byte 7-es bitjének tartalmát veszi fel |
Példa:
Ha az IX index regiszter tartalma 1000H, és az 1003H című memóriarekesz tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
akkor az
SRA (IX+3H)
utasítás végrehajtása után az 1003H című memóriarekesz, és az átvitel bit tartalma a következő lesz:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
C |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
Formátum: | OP kód |
Operandusok |
SRL |
m |
Az m operandus r, (HL), (IX+d) vagy (IY+d) bármelyike lehet, úgy, mint az RLC utasításoknál. A különböző lehetséges OP kód-operandus kombinációk az alábbiak:
SRL r | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
1 |
1 |
1 |
< |
r |
> |
||
SRL (HL) | 1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
3E | |
SRL (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
3E | |
SRL (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
CB | |
< |
- |
- |
d |
- |
- |
- |
> |
||
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
3E |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja az alábbiak szerint:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az utasítás az m operandus tartalmán egy helyértékkel jobbra történő logikai léptetést végez. A 7-es bit tartalma a 6-os bitbe kerül, 6-os bit tartalma az 5-ös bitbe kerül, stb. A 0-ás bit tartalma az átvitel bitbe kerül, és a 7-es bit törlődik. A 0-ás bit a legkisebb helyértékű.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
SRL r |
2 |
8 (4, 4) | 2,00 |
SRL (HL) |
4 |
15 (4, 4, 4, 3) | 3,75 |
SRL (IX+d) |
6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
SRL (IY+d) | 6 |
23 (4, 4, 3, 5, 4, 3) | 5,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
törlődik |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
az m operandus által meghatározott byte 0-es bitjének tartalmát veszi fel |
Példa:
Ha a B regiszter tartalma
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
akkor az
SRL B
utasítás végrehajtásának eredményeként a B regiszter, és az átvitel bit tartalma a következő lesz:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
C |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
Formátum: | OP kód |
Operandusok |
SUB |
s |
Az s operandus r, n, (HL), (IX+d) vagy (IY+d) bármelyike lehet, úgy, mint az ADD utasításoknál. A különböző lehetséges OP kód-operandus kombinációk az alábbiak:
SUB r | 1 |
0 |
0 |
1 |
0 |
< |
r |
> |
|
SUB n | 1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
D6 |
< |
- |
- |
n |
- |
- |
- |
> |
||
SUB (HL) | 1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
96 |
SUB (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
96 | |
< |
- |
- |
d |
- |
- |
- |
> |
||
SUB (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
96 | |
< |
- |
- |
d |
- |
- |
- |
> |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja az alábbiak szerint:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az s operandus tartalma kivonódik az akkumulátor tartalmából, és az eredmény az akkumulátorba kerül.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
SUB r |
1 |
4 | 1,00 |
SUB n | 2 |
7 (4, 3) | 1,75 |
SUB (HL) |
2 |
7 (4, 3) | 1,75 |
SUB (IX+d) |
5 |
19 (4, 4, 3, 5, 3) | 4,75 |
SUB (IY+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
P/V: |
1-es állapotba kerül, ha túlcsordulás áll fenn; egyébként törlődik |
N: |
1-es állapotba kerül |
C: |
1-es állapotba kerül, ha alulcsordulás történt; egyébként törlődik |
Példa:
Ha az akkumulátor 29H-t, és a D regiszter 11H-t tartalmaz, akkor a
SUB D
utasítás végrehajtásának eredményeként az akkumulátor 18H-t fog tartalmazni.
Formátum: | OP kód |
Operandusok |
XOR |
s |
Az s operandus r, n, (HL), (IX+d) vagy (IY+d) bármelyike lehet, úgy, mint az ADD utasításoknál. A különböző OP kód-operandus kombinációk az alábbiak:
XOR r | 1 |
0 |
1 |
0 |
1 |
< |
r |
> |
|
XOR n | 1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
EE |
< |
- |
- |
n |
- |
- |
- |
> |
||
XOR (HL) | 1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
AE |
XOR (IX+d) | 1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
DD |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
AE | |
< |
- |
- |
d |
- |
- |
- |
> |
||
XOR (IY+d) | 1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
FD |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
AE | |
< |
- |
- |
d |
- |
- |
- |
> |
Az r a B, C, D, E, H, L vagy A regisztereket azonosítja az alábbiak szerint:
Regiszter |
r |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
A |
111 |
Leírás:
Az utasítás az s operandus által specifikált byte tartalma, és az akkumulátor regiszter tartalma között létesít bitenkénti KIZÁRÓ VAGY kapcsolatot, Az eredmény az akkumulátorban tárolódik.
Utasítás | M ciklusok | T állapotok | 4 MHz V.i. |
XOR r |
1 |
4 | 1,00 |
XOR n | 2 |
7 (4, 3) | 1,75 |
XOR (HL) |
2 |
7 (4, 3) | 1,75 |
XOR (IX+d) |
5 |
19 (4, 4, 3, 5, 3) | 4,75 |
XOR (IY+d) | 5 |
19 (4, 4, 3, 5, 3) | 4,75 |
A jelzőbit regiszter érintett bitjei:
S: |
1-es állapotba kerül, ha az eredmény negatív; egyébként törlődik |
Z: |
1-es állapotba kerül, ha az eredmény nulla; egyébként törlődik |
H: |
1-es állapotba kerül |
P/V: |
1-es állapotba kerül páros paritás esetén; egyébként törlődik |
N: |
törlődik |
C: |
törlődik |
Példa:
Ha az akkumulátor tartalma 96H (10010110), akkor a
XOR 5DH
(Megj.: 5DH = 01011101)
utasítás végrehajtásának eredményeként az akkumulátor tartalma cbH (11001011) lesz.
A Z80-as utasítások kódjai
A táblázat a kódokat hexadecimális alakban adja meg. Az egyéb jelölések:
ADC A(HL) ADC A,(IX+d) ADC A,(IY+d) ADC A,A ADC A,B ADC A,C ADC A,D ADC A,E ADC A,H ADC A,L ADC A,n ADC HL,BC ADC HL,DE ADC HL,HL ADC HL,SP ADD A,(HL) ADD A,(IX+d) ADD A,(IY+d) ADD A,A ADD A,B ADD A,C ADD A,D ADD A,E ADD A,H ADD A,L ADD A,n ADD HL,BC ADD HL,DE ADD HL,HL ADD HL,SP ADD IX,BC ADD IX,DE ADD IX,IX ADD IX,SP ADD IY,BC ADD IY,DE ADD IY,IY ADD IY,SP AND (HL) AND (IX+d) AND (IY+d) AND A AND B AND C AND D AND E AND H AND L AND n BIT 0,(HL) BIT 0,(IX+d) BIT 0,(IY+d) BIT 0,A BIT 0,B BIT 0,C BIT 0,D BIT 0,E BIT 0,H BIT 0,L BIT 1,(HL) BIT 1,(IX+d) BIT 1,(IY+d) BIT 1,A BIT 1,B BIT 1,C BIT 1,D BIT 1,E BIT 1,H BIT 1,L BIT 2,(HL) BIT 2,(IX+d) BIT 2,(IY+d) BIT 2,A BIT 2,B BIT 2,C BIT 2,D BIT 2,E BIT 2,H BIT 2,L BIT 3,(HL) BIT 3,(IX+d) BIT 3,(IY+d) BIT 3,A BIT 3,B BIT 3,C BIT 3,D BIT 3,E BIT 3,H BIT 3,L BIT 4,(HL) BIT 4,(IX+d) BIT 4,(IY+d) BIT 4,A BIT 4,B BIT 4,C BIT 4,D BIT 4,E BIT 4,H BIT 4,L BIT 5,(HL) BIT 5,(IX+d) BIT 5,(IY+d) BIT 5,A BIT 5,B BIT 5,C BIT 5,D BIT 5,E BIT 5,H BIT 5,L BIT 6,(HL) BIT 6,(IX+d) BIT 6,(IY+d) BIT 6,A BIT 6,B BIT 6,C BIT 6,D BIT 6,E BIT 6,H BIT 6,L BIT 7,(HL) BIT 7,(IX+d) BIT 7,(IY+d) BIT 7,A BIT 7,B BIT 7,C BIT 7,D BIT 7,E BIT 7,H BIT 7,L CALL nn CALL C,nn CALL NC,nn CALL Z,nn CALL NZ,nn CALL M,nn CALL P,nn CALL PE,nn CALL PO,nn CCF CP (HL) CP (IX+d) CP (IY+d) CP A CP B CP C CP D CP E CP H CP L CP n CPD CPDR CPI CPIR CPL DAA DEC (HL) DEC (IX+d) DEC (IY+d) DEC A DEC B DEC BC DEC C DEC D DEC DE DEC E DEC H DEC HL DEC IX DEC IY DEC L DEC SP DI DJNZ d EI EX (SP),HL EX (SP),IX EX (SP),IY EX AF,AF' EC DE,HL EXX IM 0 IM 1 IM 2 IN A,(C) IN A(n) IN B,(C) IN C,(C) IN D,(C) IN E,(C) IN H,(C) IN L,(C) INC (HL) INC (IX+d) INC (IY+d) INC A INC B INC BC INC C INC D INC DE INC E INC H INC HL INC IX INC IY INC L INC SP IND INDR INI INIR JP nn JP (HL) JP (IX) JP (IY) JP C,nn JP NC,nn JP Z,nn JP NZ,nn JP M,nn JP P,nn JP PE,nn JP PO,nn JR d JR C,d JR NC,d JR Z,d LD NZ,d LD (BC),A LD (DE),A LD (HL),A LD (HL),B LD (HL),C LD (HL),D LD (HL),E LD (HL),H LD (HL),L LD (HL),n LD (IX+d),A LD (IX+d),B LD (IX+d),C LD (IX+D),D LD (IX+d),E LD (IX+d),H LD (IX+d),L LD (IX+d),n LD (IY+d),A LD (IY+d),B LD (IY+d),C LD (IY+D),D LD (IY+d),E LD (IY+d),H LD (IY+d),L LD (IY+d),n LD (nn),A LD (nn),BC LD (nn),DE LD (nn),HL LD (nn),IX LD (nn),IY LD (nn),SP LD A,(BC) LD A,(DE) LD A,(HL) LD A,(IX+d) LD A,(IY+d) LD A,(nn) LD A,A LD A,B LD A,C LD A,D LD A,E LD A,H LD A,I LD A,L LD A,n LD A,R LD B,(HL) LD B,(IX+d) LD B,(IY+d) LD B,A LD B,B LD B,C LD B,D LD B,E LD B,H LD B,L LD B,n LD BC,(nn) LD BC,nn LD C,(HL) LD C,(IX+d) LD C,(IY+d) LD C,A LD C,B LD C,C LD C,D LD C,E LD C,H LD C,L LD C,n LD D,(HL) LD D,(IX+d) LD D,(IY+d) LD D,A LD D,B LD D,C LD D,D LD D,E LD D,H LD D,L LD D,n LD DE,(nn) LD DE,nn LD E,(HL) LD E,(IX+d) LD E,(IY+d) LD E,A LD E,B LD E,C LD E,D LD E,E LD E,H LD E,L LD E,n LD H,(HL) LD H,(IX+d) LD H,(IY+d) LD H,A LD H,B LD H,C LD H,D LD H,E LD H,H LD H,L LD H,n LD HL,(nn) LD HL,nn LD I,A LD IX,(nn) LD IX,nn LD IY,(nn) LD IY,nn |
8E DD 8E d FD 8E d 8F 88 89 8A 8B 8C 8D CE n ED 4A ED 5A ED 6A ED 7A 86 DD 86 d FD 86 D 87 80 81 82 83 84 85 C6 n 09 19 29 39 DD 09 DD 19 DD 29 DD 39 FD 09 FD 19 FD 29 FD 39 A6 DD A6 D FD A6 d A7 A0 A1 A2 A3 A4 A5 E6 n CB 46 DD CB d 46 FD CB d 46 CB 47 CB 40 CB 41 CB 42 CB 43 CB 44 CB 45 CB 4E DD CB d 4E FC CB d 4E CB 4F CB 48 CB 49 CB, 4A CB 4B CB 4C CB 4D CB 56 DD CB d 56 FD CB d 56 CB 57 CB 50 CB 51 CB 52 CB 53 CB 54 CB 55 CB 5E DD CB d 5E FD CB d 5E C5 5F CB 58 CB 59 CB 5A CB 5B CB 5C CB 5D CB 66 DD CB d 66 DD CB d 66 CB 64 CB 60 CB 61 CB 62 CB 63 CB 64 CB 65 CB 6E DD CB d 6E FD CB d 6E CB 6F CB 68 CB 69 CB 6A CB AB CB AC CB 6D CB 76 DD CB d 76 FD CB d 76 CB 77 CB 70 CB 71 CB 72 CB 73 CB 74 CB 75 CB 7E DD CB d 7E FD CB d 7E CB 7F CB 78 CB 79 CB 7A CB 7B CB 7C CB 7D CD lo hi DC lo hi D4 lo hi CC lo hi C4 lo hi FC lo hi F4 lo hi EC lo hi E4 lo hi 3F BE DD BE d FD BE d BF B8 B9 BA BB BC BD FE n ED A9 ED B9 ED A1 ED B1 2F 27 35 DD 35 d FD 35 d 3D 05 0B 0D 15 1B 1D 25 2B DD 2B FD 2B 2D 3B DI 10 d FB E3 DD E3 FD E3 08 EB D9 ED 46 ED 56 ED 5E ED 78 DB n ED 40 ED 48 ED 50 ED 58 ED 60 ED 68 34 DD 34 d FD 34 d 3C 04 03 0C 14 13 1C 24 23 DD 23 FD 23 2C 33 ED AA ED BA ED A2 ED B2 C3 lo hi E9 DD E9 FD E9 DA lo hi D2 lo hi CA lo hi C2 lo hi FA lo hi F2 lo hi EA lo hi E2 lo hi 18 d 38 d 30 d 28 d 20 d 02 12 77 70 71 72 73 74 75 36 n DD 77 d DD 70 d DD 71 d DD 72 d DD 73 d DD 74 d DD 75 d DD 36 d n FD 77 d FD 70 d FD 71 d FD 72 d FD 73 d FD 74 d FD 75 d FD 36 d n 32 lo hi ED 43 lo hi ED 53 lo hi 22 lo hi DD 22 lo hi FD 22 lo hi ED 73 lo hi 0A 1A 7E DD 7E d FD 7E d 3A lo hi 7F 78 79 7A 7B 7C ED 57 7D 3E n ED 5F 46 DD 46 d FD 46 d 47 40 41 42 43 44 45 06 n ED 48 lo hi 01 lo hi 4E DD 4E d FD 4E d 4F 48 49 4A 4B 4C 4D 0E n 56 DD 56 d FD 56 d 57 50 51 52 53 54 55 16 n ED 5B lo hi 11 lo hi 5E DD 5E d FD 5E d 5F 58 59 5A 5B 5C 5D 1E n 66 DD 66 d FD 66 d 67 60 61 62 63 64 65 26 n 2A lo hi 21 lo hi ED 47 DD 2A lo hi DD 21 lo hi FD 2A lo hi FD 21 lo hi |
LD L,(HL) LD L,(IX+d) LD L,(IY+d) LD L,A LD L,B LD L,C LD L,D LD L,E LD L,H LD L,L LD L,n LD SP,(nn) LD SP,HL LD SP,IX LD SP,IY LD SP,nn LDD LDDR LDI LDIR NEG NOP OR (HL) OR (IX+d) OR (IY+d) OR A OR B OR C OR D OR E OR H OR L OR n OTDR OTIR OUT (C),A OUT (C),B OUT (C),C OUT (C),D OUT (C),E OUT (C),H OUT (C),L OUT (n),A OUTD OUTI POP AF POP BC POP DE POP HL POP IX POP IY PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY RES 0,(HL) RES 0,(IX+d) RES 0,(IY+d) RES 0,A RES 0,B RES 0,C RES 0,D RES 0,E RES 0,H RES 0,L RES 1,(HL) RES 1,(IX+d) RES 1,(IY+d) RES 1,A RES 1,B RES 1,C RES 1,D RES 1,E RES 1,H RES 1,L RES 2,(HL) RES 2,(IX+d) RES 2,(IY+d) RES 2,A RES 2,B RES 2,C RES 2,D RES 2,E RES 2,H RES 2,L RES 3,(HL) RES 3,(IX+d) RES 3,(IY+d) RES 3,A RES 3,B RES 3,C RES 3,D RES 3,E RES 3,H RES 3,L RES 4,(HL) RES 4,(IX+d) RES 4,(IY+d) RES 4,A RES 4,B RES 4,C RES 4,D RES 4,E RES 4,H RES 4,L RES 5,(HL) RES 5,(IX+d) RES 5,(IY+d) RES 5,A RES 5,B RES 5,C RES 5,D RES 5,E RES 5,H RES 5,L RES 6,(HL) RES 6,(IX+d) RES 6,(IY+d) RES 6,A RES 6,B RES 6,C RES 6,D RES 6,E RES 6,H RES 6,L RES 7,(HL) RES 7,(IX+d) RES 7,(IY+d) RES 7,A RES 7,B RES 7,C RES 7,D RES 7,E RES 7,H RES 7,L RET RET C RET NC RET Z RET NZ RET M RET P RET PE RET PO RETI RETN RL (HL) RL (IX+d) RL (IY+d) RL A RL B RL C RL D RL E RL H RL L RLA RLC (HL) RLC (IX+d) RLC (IY+d) RLC A RLC B RLC C RLC D RLC E RLC H RLC L RLCA RLD RR (HL) RR (IX+d) RR (IY+d) RR A RR B RR C RR D RR E RR H RR L RRA RRC (HL) RRC (IX+d) RRC (IY+d) RRC A RRC B RRC C RRC D RRC E RRC H RRC L RRCA RRD RST 00 RST 08 RST 10 RST 18 RST 20 RST 28 RST 30 RST 38 SBC A,(HL) SBC A,(IX+d) SBC A,(IY+d) SBC A,A SBC A,B SBC A,C SBC A,D SBC A,E SBC A,H SBC A,L SBC A,n SBC HL,BC SBC HL,DE SBC HL,HL SBC HL,SP SCF SET 0,(HL) SET 0,(IX+d) SET 0,(IY+d) SET 0,A SET 0,B SET 0,C SET 0,D SET 0,E SET 0,H SET 0,L SET 1,(HL) SET 1,(IX+d) SET 1,(IY+d) SET 1,A SET 1,B SET 1,C SET 1,D SET 1,E SET 1,H SET 1,L SET 2,(HL) SET 2,(IX+d) SET 2,(IY+d) SET 2,A SET 2,B SET 2,C SET 2,D SET 2,E SET 2,H SET 2,L SET 3,(HL) SET 3,(IX+d) SET 3,(IY+d) SET 3,A SET 3,B SET 3,C SET 3,D SET 3,E SET 3,H SET 3,L SET 4,(HL) SET 4,(IX+d) SET 4,(IY+d) SET 4,A SET 4,B SET 4,C SET 4,D SET 4,E SET 4,H SET 4,L SET 5,(HL) SET 5,(IX+d) SET 5,(IY+d) SET 5,A SET 5,B SET 5,C SET 5,D SET 5,E SET 5,H SET 5,L SET 6,(HL) SET 6,(IX+d) SET 6,(IY+d) SET 6,A SET 6,B SET 6,C SET 6,D SET 6,E SET 6,H SET 6,L SET 7,(HL) SET 7,(IX+d) SET 7,(IY+d) SET 7,A SET 7,B SET 7,C SET 7,D SET 7,E SET 7,H SET 7,L SKA (HL) SLA (IX+d) SLA (IY+d) SLA A SLA B SLA C SLA D SLA E SLA H SLA L SRA (HL) SRA (IX+d) SRA (IY+d) SRA A SRA B SRA C SRA D SRA E SRA H SRA L SRL (HL) SRL (IX+d) SRL (IY+d) SRL A SRL B SRL C SRL D SRL E SRL H SRL L SUB (HL) SUB (IX+d) SUB (IY+d) SUB A SUB B SUB C SUB D SUB E SUB H SUB L SUB n XOR (HL) XOR (IX+d) XOR (IY+d) XOR A XOR B XOR C XOR D XOR E XOR H XOR L XOR n |
6E DD 6E d FD 6E d 6F 68 69 6A 6B 6C 6D 23 n ED 7B lo hi F9 DD F9 ED F9 31 lo hi ED A8 ED B8 ED A0 ED B0 ED 44 00 B6 DD B6 d FD B6 d B7 B0 B1 B2 B3 B4 B5 F6 n ED BB ED B3 ED 79 ED 41 ED 49 ED 51 ED 59 ED 61 ED 69 D3 n ED AB ED A3 F1 C1 D1 E1 DD E1 FD E1 F5 C5 D5 E5 DD E5 FD E5 CB 86 DD CB d 86 FD CB d 86 CB 87 CB 80 CB 81 CB 82 CB 83 CB 84 CB 85 CB 8E DD CB d 8E FD CB d 8E CB 8F CB 88 CB 89 CB 8A CB 8B CB 8C CB 8D CB 96 DD CB d 96 FD CB d 96 CB 97 CB 90 CB 91 CB 92 CB 93 CB 94 CB 95 CB 9E DD CB d 9E FD CB d 9E CB 9F CB 98 CB 99 CB 9A CB 9B CB 9C CB 9D CB A6 DD CB d A6 FD CB d A6 CB A7 CB A0 CB A1 CB A2 CB A3 CB A4 CB A5 CB AE DD CB d AE FD CB d AE CB AF CB A8 CB A9 CB AA CB AB CB AC CB AD CB B6 DD CB d B6 FD CB d B6 CB B7 CB B0 CB B1 CB B2 CB B3 CB B4 CB B5 CB BE DD CB d BE FD CB d BE CB BF CB B8 CB B9 CB BA CB BB CB BC CB BD C9 D8 D0 C8 C0 F8 F0 E8 E0 ED 4D ED 45 CB 16 DD CB d 16 FD CB d 16 CB 17 CB 10 CB 11 CB 12 CB 13 CB 14 CB 15 17 CB 06 DD CB D 06 FD CB d 06 CB 07 CB 00 CB 01 CB 02 CB 03 CB 04 CB 05 07 ED 6F CB 1E DD CB d 1E FD CB d 1E CB 1F CB 18 CB 19 CB 1A CB 1B CB 1C CB 1D 1F CB 0E DD CB d 0E FD CB d 0E CB 0F CB 08 CB 09 CB 0A CB 0B CB 0C CB 0D 0F ED 67 C7 CF D7 DF E7 EF F7 FF 9E DD 9E d FD 9E d 9F 98 99 9A 9B 9C 9D DE n ED 42 ED 52 ED 62 ED 72 37 CB C6 DD CB d C6 FD CB b C6 CB C7 CB C0 CB C1 CB C2 CB C3 CB C4 CB C5 CB CE DD CB d CE FD CB d CE CB CF CB C8 CB C9 CB CA CB CB CB CC CB CD CB D6 DD CB d D6 FD CB d D6 CB D7 CB D0 CB D1 CB D2 CB D3 CB D4 CB D5 CB DE DD CB d DE FD CB d DE CB DF CB D8 CB D9 CB DA CB DB CB DC CB DD CB E6 DD CB d E6 FD CB d E6 CB E7 CB E0 CB E1 CB E2 CB E3 CB E4 CB E5 CB EE DD CB d EE FD CB d EE CB EF CB E8 CB E9 CB EA CB EB CB EC CB ED CB F6 DD CB d F6 FD CB d F6 CB F7 CB F0 CB F1 CB F2 CB F3 CB F4 CB F5 CB FE DB CB d FE FD CB d FE CB FF CB F8 CB F9 CB FA CB FB CB FC CB FD CB 26 DD CB d 26 FD CB d 26 CB 27 CB 20 CB 21 CB 22 CB 23 CB 24 CB 25 CB 2E DD CB d 2E FD CB d 2E CB 2F CB 28 CB 29 CB 2A CB 2B CB 2C CB 2D CB 3E DD CB d 3E FD CB d 3E CB 3F CB 38 CB 39 CB 3A CB 3B CB 3C CB 3D 96 DD 96 d FD 96 d 97 90 91 92 93 94 95 D6 n AE DD AE d FD AE d AF A8 A9 AA AB AC AD EE n |