Zestaw instrukcji mikroprocesora Z80


Grupa instrukcji ogólnych arytmetycznych oraz sterujących mikroprocesorem

 

DAA

      

DECIMAL ADJUST ACCUMULATOR = Popraw dziesiętnie akumulator

Mnemonik:   DAA
   
0 0 1 0 0 1 1 1 27
Opis:   Instrukcja ta warunkowo poprawia zawartość Akumulatora po operacjach dodawania i odejmowania liczb w kodzie BCD (Binary Coded Decimal). Dla dodawania (ADD, ADC, INC) lub odejmowania (SUB, SBC, DEC, NEG) poniższa tabela wskazuje wykonywaną operację:

 

Operacja C przed
DAA
Górna cyfra
(bity 7-4)
H przed
DAA
Dolna cyfra
(bity 3-0)
Liczba
dodawana do A
C po
DAA
ADD
ADC
INC
0
0
0
0
0
0
1
1
1
0-9
0-8
0-9
A-F
9-F
A-F
0-2
0-2
0-3
0
0
1
0
0
1
0
0
1
0-9
A-F
0-3
0-9
A-F
0-3
0-9
A-F
0-3
00H
06H
06H
60H
66H
66H
60H
66H
66H
0
0
0
1
1
1
1
1
1
SUB
SBC
DEC
NEG
0
0
1
1
0-9
0-8
7-F
6-7
0
1
0
1
0-9
6-F
0-9
6-F
00H
FAH
A0H
9AH
0
0
1
1
   
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   S ustawiany na 1, jeśli po operacji najbardziej znaczący bit Akumulatora jest ustawiony na 1; inaczej zerowany
Z ustawiany na 1, jeśli po operacji Akumulator zawiera zero; inaczej zerowany
H - zobacz do tabeli
P/V ustawiany na 1, jeśli po operacji Akumulator zawiera parzystą liczbę bitów o stanie 1; inaczej zerowany
N nie jest zmieniany
C - zobacz do tabeli
Przykład:   Jeśli jest wykonywane dodawanie liczb 15 (BCD) i 27 (BCD), to prosta arytmetyka daje wynik:
15
+27
42
Lecz binarne postacie tych liczb są dodawane w akumulatorze wg standardowych zasad dodawania dwójkowego:
0001
+0010
       0101
0111
        
0011   1100   = 3C

Otrzymana suma jest nieprawidłowa w notacji BCD. Instrukcja DAA poprawia ten wynik tak, aby otrzymać poprawne przedstawienie obliczonej sumy w BCD:

0011
+0000
       1101
0110
        
0100   0010   = 42

 


 

CPL

      

COMPLEMENT ACCUMULATOR = Zaneguj bity akumulatora

Operacja:   A ← A
Mnemonik:   CPL
   
0 0 1 0 1 1 1 1 2F
Opis:   Zawartość akumulatora zostaje zanegowana - każdy bit przyjmuje po operacji stan przeciwny.
   
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   S nie jest zmieniany
Z nie jest zmieniany
H jest ustawiany na 1
P/V nie jest zmieniany
N jest ustawiany na 1
C nie jest zmieniany
Przykład:   Jeśli Akumulator zawiera 1011 0100, to po wykonaniu instrukcji CPL Akumulator będzie zawierał 0100 1011.

 


 

NEG

      

NEGATE ACCUMULATOR WITH 2'S COMPLEMENT = Utwórz w akumulatorze wartość przeciwną

Operacja:   A ← 0-A
Mnemonik:   NEG
   
1 1 1 0 1 1 0 1 ED
0 1 0 0 0 1 0 0 44
Opis:   Zawartość Akumulatora zostaje zamieniona na przeciwną w kodzie U2. Jest to równoważne odjęciu zawartości Akumulatora od zera. Zauważ, że wartość 80H nie ulega zmianie.
   
Cykle Takty Czas
2 8 (4,4) 2,00μs
Zmieniane znaczniki:   S ustawiany na 1, jeśli wynik jest ujemny; inaczej zerowany
Z ustawiany na 1, jeśli wynik zero; inaczej zerowany
H ustawiany na 1, jeśli występuje pożyczka z bitu 4; inaczej zerowany
P/V ustawiany na 1,  jeśli przed operacją Akumulator zawierał 80H; inaczej zerowany
N jest ustawiany na 1
C jest ustawiany na 1, jeśli przed operacją Akumulator zawierał wartość różną od zera; inaczej zerowany
Przykład:   Jeśli Akumulator zawiera
1 0 0 1 1 0 0 0

to po wykonaniu instrukcji NEG w Akumulatorze znajdzie się następująca zawartość:

0 1 1 0 1 0 0 0

 


 

CCF

      

COMPLEMENT CARRY FLAG = Zmień stan znacznika przeniesienia na przeciwny

Operacja:   CY ← CY
Mnemonik:   CCF
   
0 0 1 1 1 1 1 1 3F
Opis:   Znacznik przeniesienia C w rejestrze F otrzymuje stan przeciwny.
   
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   S nie zmieniany
Z nie zmieniany
H kopiowane poprzednie przeniesienie
P/V nie zmieniany
N zerowany
C jest ustawiany na 1, jeśli przed operacją był równy zero, inaczej jest ustawiany na zero

 


 

SCF

      

SET CARRY FLAG = Ustaw znacznik przeniesienia na 1

Operacja:   CY ← 1
Mnemonik:   SCF
   
0 0 1 1 0 1 1 1 37
Opis:   Znacznik przeniesienia C w rejestrze F jest ustawiany na 1.
   
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   S nie zmieniany
Z nie zmieniany
H zerowany
P/V nie zmieniany
N zerowany
C ustawiany na 1

 


 

NOP

      

NO OPERATION = Nic nie rób

Operacja:   -
Mnemonik:   NOP
   
0 0 0 0 0 0 0 0 00
Opis:   W trakcie tego cyklu maszynowego mikroprocesor nie wykonuje żadnej operacji
   
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   Żaden

 


 

HALT

      

HALT = Zatrzymaj się

Operacja:   -
Mnemonik:   HALT
   
0 1 1 1 0 1 1 0 76
Opis:   Instrukcja HALT wstrzymuje działanie mikroprocesora aż do otrzymania sygnału przerwania lub zerowania. W stanie wstrzymanym mikroprocesor wykonuje instrukcje NOP w celu podtrzymania cykli odświeżania pamięci dynamicznych.
   
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   Żaden

 


 

DI

      

DISABLE INTERRUPTS = Wyłącz przyjmowanie przerwań maskowanych

Operacja:   IFF ← 0
Mnemonik:   DI
   
1 1 1 1 0 0 1 1 F3
Opis:   Rozkaz DI wyłącza przyjmowanie przerwań maskowanych przez wyzerowanie przerzutników zezwoleń na przerwania (IFF1 i IFF2). Instrukcja ta wyłącza przerwania maskowane podczas swojego wykonania.
   
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   Żaden
Przykład:   Gdy mikroprocesor wykonuje instrukcję DI, przyjmowanie przerwań maskowanych zostaje zablokowane aż do kolejnego wykonania instrukcji EI, która odblokuje przyjmowanie tych przerwań. Mikroprocesor nie odpowiada na sygnał Żądania Obsługi Przerwania (INT).

 


 

EI

      

ENABLE INTERRUPTS = Włącz przyjmowanie przerwań maskowanych

Operacja:   IFF ← 1
Mnemonik:   EI
   
1 1 1 1 1 0 1 1 FB
Opis:   Instrukcja EI ustawia oba przerzutniki zezwolenia na przerwania (IFF1 i IFF2) na 1, co umożliwia rozpoznawanie przerwań maskowanych. Uwaga: podczas wykonywania tej instrukcji oraz instrukcji po niej następującej przerwania maskowane są zablokowane.
   
Cykle Takty Czas
1 4 1,00μs
Zmieniane znaczniki:   Żaden
Przykład:   Gdy mikroprocesor wykona instrukcje EI RETI, to przerwania maskowane zostają włączone po wykonaniu instrukcji RETI.

 


 

IM 0

      

INTERRUPT MODE 0 = Tryb 0 przerwań

Operacja:   -
Mnemonik:   IM
Argument:   0
 
1 1 1 0 1 1 0 1 ED
0 1 0 0 0 1 1 0 46
Opis:   Instrukcja IM 0 ustawia tryb 0 reakcji na przerwania. W trybie tym urządzenie wysyłające przerwanie umieszcza dowolną instrukcję na magistrali danych w celu wykonania jej przez mikroprocesor. Pierwszy bajt wielobajtowej instrukcji jest odczytywany podczas cyklu potwierdzenia przyjęcia przerwania. Kolejne bajty zostają odczytane za pomocą zwykłych cykli odczytu pamięci.
   
Cykle Takty Czas
2 8 (4,4) 2,00μs
Zmieniane znaczniki:   Żaden

 


 

IM 1

      

INTERRUPT MODE 1 = Tryb 1 przerwań

Operacja:   -
Mnemonik:   IM
Argument:   1
 
1 1 1 0 1 1 0 1 ED
0 1 0 1 0 1 1 0 56
Opis:   Instrukcja IM 1 ustawia tryb 1 reakcji na przerwania. W trybie tym urządzenie mikroprocesor odpowiada na przerwanie za pomocą restartu od adresu 0038H.
   
Cykle Takty Czas
2 8 (4,4) 2,00μs
Zmieniane znaczniki:   Żaden

 


 

IM 2

      

INTERRUPT MODE 2 = Tryb 2 przerwań

Operacja:   -
Mnemonik:   IM
Argument:   2
 
1 1 1 0 1 1 0 1 ED
0 1 0 1 1 1 1 0 5E
Opis:   Instrukcja IM 2 ustawia wektorowy tryb 2 obsługi przerwań. Tryb ten pozwala na wykonanie pośredniego skoku do podprogramu znajdującego się w dowolnym miejscu pamięci za pomocą 8-bitowego wektora dostarczonego przez urządzenie zewnętrzne. Wektor ten staje się następnie młodszymi 8 bitami pośredniego wskaźnika, natomiast rejestr I mikroprocesora dostarcza najstarsze osiem bitów. Otrzymany w ten sposób adres wskazuje dwie komórki w tablicy wektorów skoków. Komórki te zawierają adres początku procedury obsługi przerwania.
   
Cykle Takty Czas
2 8 (4,4) 2,00μs
Zmieniane znaczniki:   Żaden

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe