57
Mikroprocesor Z80 Osnovne karakteristike Z80 CPU

Z80_CPU

  • Upload
    josip

  • View
    3

  • Download
    1

Embed Size (px)

DESCRIPTION

mikroprocesor Z80

Citation preview

Page 1: Z80_CPU

Mikroprocesor Z80

Osnovne karakteristike Z80 CPU

Page 2: Z80_CPU
Page 3: Z80_CPU

1+_ 1+_

MUXMUX

BB' CC'

DD' EE'

H LH' L'

IX

IY

PC

SP

TEMP

F F'

+

Spr

emni

k

ALU

8-bitna podatkovna sabirnica

16-bitna adresna sabirnica

Upravljačka sabirnica

Upravljački blok Spr

emni

kS

prem

nik

A A'

ACU

Upravljačka logika

Registar naredbi

R

Dekoder naredbi

I

Zastavice

Podatkovniport

Adresniport

Upravljački signali

Page 4: Z80_CPU

Digitalni sklopovi

• Postoje dvije vrste sklopova:

– Kombinacijski: stanje na izlazu ovisi o trenutnim stanjima ulaza

– Sekvencijalni: stanje ovisi o prethodnim stanjima i trenutnim stanjima na ulazu (bistabil, monostabil, astabil)

Page 5: Z80_CPU

• Podaci se u računalu nalaze u binarnom obliku• Bit je osnovna jedinica informacije• 1kb = 210b = 1024b

Zapis broja u digitalnom računalu

Page 6: Z80_CPU

Binarni broj sa predznakom

• Zapis 8-bitnog binarnog broja sa predznakom obavlja se pomoću dvojnog komplementa

• Dvojni komplement = Unarni komplement + 1

PREDZNAK0 = (+)1 = (–)

MAGNITUDA7-bitni binarni broj

8-BITNI BINARNI BROJ SA PREDZNAKOMvrijednost od –27 = –12810 do 27–1=+12710

8-BITNI BINARNI BROJ BEZ PREDZNAKAvrijednost od 0 do 28–1=+25510

MSB LSB

Page 7: Z80_CPU

Mikroprocesor

• CPU - Central Processing Unit ili mikroprocesor• Mikroprocesor je digitalni integrirani sklop koji

se sastoji od kombinacijskih i sekvencijalnih sklopova i može izvršavati razne zadatke

• Programira se pomoću naredbi koje se spremaju u memoriji računala

• Naredbe se izvršavaju slijedno, jedna iza druge• Mikroprocesor Z80 je zbog svoje jednostavno-

sti prikladan za rad na LV

Page 8: Z80_CPU

Mikroupravljač

• Mikroupravljač nije isto što i mikroprocesor!• Mikroupravljač sadrži CPU kao jednu od

komponenti.• Osim CPU, mikroupravljač sadrži i popratne

periferne sklopove: brojač i timer (CTC), sklop za paralelnu komunikaciju (PIO), sklop za serijsku komunikaciju (SIO i UART), memoriju, te ostale sklopove kao što su: sklop za kontrolu prena-pona, pulsno-širinski modulator...

Page 9: Z80_CPU

Z80 CPU (osnovne karakteristike)

• 8-bitni mikroprocesor• memorijsko adresno područje veličine 64 KB• ulazno-izlazno adresno područje veličine 64 KB• takt frekvencije 2MHz (Z80CPU), 4MHz (Z80A CPU),

6MHz (Z80C CPU)• 208 bitova unutrašnje RAM memorije organizirane u

22 registra• dva skupa registara opće namjene• 158 naredbi

Page 10: Z80_CPU

Z80 CPU (osnovne karakteristike)

• tri izvora prekida, nekoliko načina obrade prekida• Logičke naredbe za operacije nad bitovima, podržava

16 bitnu aritmetiku, pretraživanje i premještanje blokova podataka.

• posjeduje logiku za osvježavanje dinamičkih memorija • podržava deset načina adresiranja• jednostruko napajanje +5V• smješten u standardno plastično ili keramičko kućište

sa 40 nožica

Page 11: Z80_CPU
Page 12: Z80_CPU

ORGANIZACIJAMEMORIJEAdresna sabirnica je 16-bitna što utječe na količinu podataka koje je moguće zapisati u memoriji

Može adresirati 64 k adresa

Podatkovne sabirnica je 8-bita što utječe na veličinu podatka koji je moguće zapisati u jedno memorijsko mjesto

Može spremiti podatk veličine 1B

, tj. brojčane vrijednosti od 0 do 255

Page 13: Z80_CPU

Registri mikroprocesora Z80

• 8-bitni registri opće namjene: B, C, D, H, L• Mogu se koristiti kao 16-bitni registarski parovi

BC, DE, HL

Page 14: Z80_CPU

Registri mikroprocesora Z80

• Registri posebne namjene:A akumulator služi za ALU operacijeF flag registar daje informaciju o rezultatuIX indeksni registarIY indeksni registarI interrupt registarR refresh registar za osvježavanje memorijeSP stack pointer – pokazivač vrha stoga

Page 15: Z80_CPU

Mikroprocesor Z80

Asemblerski jezikStrojni jezik

Page 16: Z80_CPU

Asemblerski jezik

• Asemblerski kod - jezik niske razine za programiranje računala, mikroprocesora, mikrokontrolera i drugih integriranih sklopova.

• Strojni kod - skup brojčano zapisanih naredbi.• Asembler - uslužni program za prevođenje

asemblerskog jezika u strojni jezik.• Disasembler - uslužni program za prevođenje

strojnog jezika u asemblerski jezik.

Page 17: Z80_CPU
Page 18: Z80_CPU

Programski jezici 1. i 2. generacije

• 1. generacija: strojni kod se pisao direktno u memoriju računala. Moralo se paziti na memorijska mjesta naredbi u memoriji.

• 2. generacija: omogućava lakši pristup funkcijama mikroprocesora sa riječima pisanim naredbama u asemblerskom jeziku. Memorijska mjesta za pojedinu naredbu dodjeljivana su automatski pomoću asemblera.

Page 19: Z80_CPU

Naredbe mikroprocesora se mogu grupirati u tri osnovna skupa naredbi

• PODATKOVNE NAREDBE - naredbe prijenosa podataka– Različiti načini adresiranja podataka– Rad sa stogom– Blokovski prijenos podataka– Ulazno / izlazne za prijenos podataka između perifernih sklopova

• ARITMETLKO LOGIČKE NAREDBE – za matematičke operacije– Zbrajanje i oduzimanje– Logičke funkcije– Postavljanje, brisanje i ispitivanja bita– Posmak i rotacija

• KONTROLNE NAREDBE – za upravljanje tokom programa– Bezuvjetni i uvjetni skok– Bezuvjetni i uvjetni poziv– Kontrola mikroprocesora– Kontrola prekida

Page 20: Z80_CPU

Načini adresiranja podataka

• Neposredno adresiranje (Immediate data transfer)– 8-bitnoLD REG,d8; LD (HL),d8

• REG = B, C, D, E, H, L, A; 8-bitni registri d8 = 8-bitni podatak– 16-bitnoLD RR,d16

• RR = BC, DE, HL, IX, IY, SP; 16-bitni registri d16 = 16-bitni podatak

• Direktno adresiranje (Direct data transfer)– 8-bitnoLD A,(a16); LD (a16),A– 16-bitnoLD RR,(a16); LD (a16),REG

• a16 = 16-bitna adresa

Page 21: Z80_CPU

Načini adresiranja podataka

• Indirektno adresiranje (Indirect data transfer)– LD A,(RR); LD (RR),A

• RR = BC, DE, HL

• Registarsko adresiranje (Register data transfer)– LD R,R

• R = B, C, D, E, H, L, A

• Indeksirano adresiranje (Index data transfer)– LD (II + dd),R ; LD (II+dd),d8

• II = IX, IY; dd = 8-bitni broj s predznakom; d8 = 8-bitni podatak

Page 22: Z80_CPU

Rad sa stogom

LD SP, 0FE9H ; (a) U registru SP je definiran početak stoga.PUSH BC ; (b) Na stog se stavlja 16bitni podatak na stog iz BC.EX (SP), HL ; (c) Zamjenjuje vrijednost na stogu sa novim podatkom HL.POP DE ; (d) Uzima podatak sa stoga i sprema ga u DE.PUSH DE ; (e) Na stog se stavlja 16bitni podatak na stog iz DE.

LIFO memorija (Last In First Out) – služi za privremeno spremanje podataka i za spremanje povratne adrese potprograma

0FE6 H

0FE7 H

0FE8 H

0FE9 H

H

L

B

C

D

E

(a) (b) (c) (d) (e)

Page 23: Z80_CPU

Instrukcije zamjene

• Zamjena podatka na vrh stoga– LD (SP),HL LD (SP),IX LD (SP),IY

• Zamjena akumulatora i statusnog registra osnovnog skupa registara s pomoćnim– LD AF,AF’

• Zamjena osnovnog i pomoćnog skupa registara– EXX

Page 24: Z80_CPU

Instrukcije prijenosa bloka podataka

• Instrukcije za prijenos podataka sa memorijske lokacije adresirane HL registarskim parom na memorijsku lokaciju adresiranu sa DE registarskim parom– LDD (Load and Decrement) prenese podatak, dekrementira HL i DE– LDI (Load and Increment) prenese podatak, inkrementira HL i DE

• Registarski par BC sadrži količinu podataka koju treba prenijeti i uvijek je dekrementiran ovim instrukcijama

• Prijenos se može ponavljati dok BC ne dostigne nula instrukcijama LDDR i LDIR– LDDR (Load Decrement and Repeat)– LDIR (Load Increment and Repeat)

Page 25: Z80_CPU

Instrukcije za prijenos U/I podataka

• Prijenos podataka između Z80 i vanjskih uređaja• Broj porta fiksan

– IN A,d8 OUT d8,A• d8 = 8-bitna adresa porta

• Broj porta varijabilan (nalazi se u C)– IN REG,(C) OUT (C),REG

• REG = B, C, D, E, H, L, A

• Blokovski prijenos podataka sa(na) memorijske lokacije adresirane HL registarskim parom na(sa) port adresiran C registrom. Moguće je ponavljanje pri čemu je brojač registar B.– INI IND INIR INDR– OUTI OUTD OUTIR OUTDR

Page 26: Z80_CPU

Pitanja za vježbu• Kojih pet načina adresiranja postoje kod Z80

mikroprocesora?– Neposredno, direktno, indirektno, registarsko, indeksirano.

• Zašto je rijetkost u programu pronaći instrukciju LD B,B?– Jer je besmislena, učitava sadržaj reg. B u reg. B.

• Ako je IX=1200h i izvrši se instrukcija LD A,(IX+12h), koja memorijska lokacija je učitana u akumulator?– 1212h.

• Koliko bita na stog stavlja instrukcija PUSH?– 16.

• Ako nakon PUSH BC instrukcije slijedi instrukcija POP AF što sadrži statusni registar?– Sadržaj registra C

Page 27: Z80_CPU

Zadatak• Napisati program koji kopira 300 podataka iz memorije s

početkom na 2000H na adresu 4000H. Koristiti instrukciju LDIR.

ORG 0000HLD BC, 300

LD HL, 2000HLD DE, 4000HLDIREND

Page 28: Z80_CPU

Aritmetičke i logičke instrukcije

Page 29: Z80_CPU

Aritmetičke i logičke funkcije

• Funkcije zbrajanja i oduzimanja– Zbrajanje– Zbrajanje sa prijenosom– Oduzimanje– Oduzimanje sa prijenosom

• Logičke funkcije– Komplement– Logički I– Logički ILI– Logički isključivo ILI

• Instrukcije postavljanja, brisanja i ispitivanja bita• Instrukcije posmaka• Instrukcije rotacije

Page 30: Z80_CPU

Zbrajanje

• 8-bitno zbrajanje dodaje operand sadržaju akumulatora, zastavice se mijenjaju u skladu sa rezultatom– ADD A,d8– ADD A,REG– ADD A,(HL)– ADD A,(II+dd)

• d8 = 8-bitni podatak; REG = B, C, D, E, H, L, A; II = IX, IY; dd = 8-bitni broj s predznakom

• Za razliku od 8-bitnih instrukcija utječu samo na stanje C zastavice.– ADD HL,RR– ADD II,RR– ADC HL,RR

• RR = BC, DE, HL, SP; II = IX, IY

Page 31: Z80_CPU

Zbrajanje sa prijenosom

• Radi ostvarenja prijenosa pri zbrajanju više-bajtnih brojeva koristi se zbrajanje sa prijenosom.

• Dodaje se operand i zastavica C (carry) sadržaju akumulatora– ADC A,d8

• d8 = 8-bitni podatak

– ADC A,REG• REG = B, C, D, E, H, L, A

– ADC A,(HL)– ADC A,(II+dd)

• II = IX, IY; dd = 8-bitni broj s predznakom

Page 32: Z80_CPU

Oduzimanje

• Oduzimaju operand od sadržaja akumulatora, zastavice se mijenjaju u skladu sa rezultatom– SUB A,d8– SUB A,REG– SUB A,(HL)– SUB A,(II+dd)

• d8 = 8-bitni podatak; REG = B, C, D, E, H, L, A; II = IX, IY; dd = 8-bitni broj s predznakom

Page 33: Z80_CPU

Oduzimanje sa prijenosom

• Radi ostvarenja prijenosa pri oduzimanju više-bajtnih brojeva koristi se oduzimanje sa prijenosom.

• Od sadržaja akumulatora oduzima se operand i zastavica C (carry).– SBC A,d8– SBC A,REG– SBC A,(HL)– SBC A,(II+dd)– SBC HL,RR

• d8 = 8-bitni podatak; REG = B, C, D, E, H, L, A; II = IX, IY; dd = 8-bitni broj s predznakom; RR = BC, DE, HL, SP

Page 34: Z80_CPU

Inkrementiranje i dekrementiranje

• Zbrajanje sa 1 (INC) i oduzimanje za 1 (DEC)• 8-bitno utječe na sve zastavice osim C

– INC REG DEC REG– INC (HL) DEC (HL)– INC (II+dd) DEC (II+dd)

• REG = B, C, D, E, H, L, A; II = IX, IY; dd = 8-bitni broj s predznakom

• 16-bitno ne utječe na stanja zastavica– INC RR DEC RR– INC II DEC II

• RR = BC, DE, HL, SP

Page 35: Z80_CPU

Instrukcije uspoređivanja

• Modificirane instrukcije oduzimanja – rezultat ne odlazi u akumulator, u skladu sa rezultatom mijenja se stanje zastavica.

• Ako je operand jednak sadržaju akumulatora zastavica Z je postavljena.– CP d8 A-d8– CP REG A-REG– CP (HL) A-(HL)– CP (II+dd) A-(II+dd)

• Blokovsko uspoređivanje podataka uspoređuje sadržaj memorijske lokacije adresirane HL registarskim parom sa sadržajem akumulatora. Moguće je ponavljanje pri čemu je brojač registarski par BC.– CPI CPIR– CPD CPDR

Page 36: Z80_CPU

Logičke instrukcije

• Komplement sadržaja akumulatora– CPL – unarni komplement– NEG – dualni komplement

• Logički I – selektivno brisanje bitova akumulatora maskom (0=brisanje bita, 1=nepromijenjeno stanje bita)– AND d8– AND REG– AND (HL)– AND (II+dd)

• d8 = 8-bitni podatak; REG = B, C, D, E, H, L, A; II = IX, IY; dd = 8-bitni broj s predznakom

Page 37: Z80_CPU

Logičke instrukcije

• Logički ILI – selektivno postavljanje bitova akumulatora maskom (1=postavljanje bita, 0=nepromijenjeno stanje bita)– OR d8– OR REG– OR (HL)– OR (II+dd)

• Logički isključivi ILI – selektivno invertiranje bitova akumulatora maskom (1=invertiranje bita, 0=nepromijenjeno stanje bita)– XOR d8– XOR REG– XOR (HL)– XOR (II+dd)

• d8 = 8-bitni podatak; REG = B, C, D, E, H, L, A; II = IX, IY; dd = 8-bitni broj s predznakom

Page 38: Z80_CPU

Postavljanje, brisanje i testiranje bita

• Postavljanje pojedinačnog bita– RES x,REG– RES x,(HL)– RES x,(II+dd)

• Brisanje pojedinačnog bita– SET x,REG– SET x,(HL)– SET x,(II+dd)

• Testiranje pojedinačnog bita – zastavica Z se postavlja u skladu sa rezultatom– BIT x,REG– BIT x,(HL)– BIT x,(II+dd)

• x = broj bita od 0 do 7; REG = B, C, D, E, H, L, A; II = IX, IY; dd = 8-bitni broj s predznakom

Page 39: Z80_CPU

Instrukcije posmaka• Logički posmak u lijevo i desno

0SLA

CY

Aritmetički posmak u desno – dijeljenje s 2 broja s predznakom

0SRL

CY

SRA

CY

Page 40: Z80_CPU

Instrukcije rotacije• Rotiranje u lijevo i desno

RLCY

RRCY

Cirkularno rotiranje u lijevo i desno

RLC

CY

RRC

CY

Page 41: Z80_CPU

Pitanja za vježbu

• Koja instrukcija utječe na zastavicu Z; LD A,0 ili XOR A?– XOR A.

• U kojem registru se nalazi rezultat većine aritmetičkih i logičkih instrukcija?– A.

• Što čini instrukcija NEG?– Dualni komplement akumulatora (mijenja predznak).

• Koju selektivnu promjenu bitova obavljaju instrukcije AND, OR i XOR?– AND – brisanje– OR – postavljanje– XOR – invertiranje

• Za koje aritmetičke operacije se koriste instrukcije posmaka SLA i SRA?– SLA – množenje sa 2 – SRA – dijeljenje sa 2 broja sa predznakom

Page 42: Z80_CPU

Zadatak

• Napisati program za 16 bitno oduzimanje ako je prvi podatak na adresi 1000H a drugi na 1002H. Rezultat spremiti na 1004H.

ORG 0000HLD HL, (1000H)LD BC, (1002H) SBC HL,BCLD (1004H),HLEND

Page 43: Z80_CPU

Zadatak• Napisati program koji množi sadržaj registra D sa 9.

ORG 0000HLD A,DSLA A SLA ASLA A ADD A,DLD D,AEND

Page 44: Z80_CPU

Zadatak• Pokazati na primjeru korištenje instrukcije CPDR.

– Traženje podatka 1AH u memorijskom bloku od 6000H do 6064H. Niži byte adrese nađenog podatka treba zapisati u registar D.

ORG 0000HLD A, 1AH

LD HL, 6064HLD BC, 64HCPDRLD D,LEND

Page 45: Z80_CPU

Naredbe za upravljanje programom

Page 46: Z80_CPU

Instrukcije bezuvjetnog skoka

• Pojavljuju se u tri oblika– Apsolutni skok (JP) – omogućava programski skok na

instrukciju na bilo kojoj memorijskoj lokaciji.• JP a16 a16=16-bitna adresa

– Relativni skok (JR) – omogućava programski skok na instrukciju koja se nalazi u memoriji u rasponu od +127 do -128 byte-a od trenutne lokacije.

• JR dd dd=8-bitni broj s predznakom– Indirektni skok (JP) – omogućava programski skok na

instrukciju na lokaciji na koju pokazuje neki od registara HL, IX, IY.

• JP (RR) RR=HL,IX,IY

Page 47: Z80_CPU

Instrukcije uvjetnog skoka

• Uvjet se testira pomoću zastavica kako bi se odlučilo hoće li doći do skoka ili ne. Postoje u apsolutnom i relativnom obliku.– Testiranje zastavice Z (Zero)

• JP Z,a16 JP NZ,a16 JR Z,dd JR NZ,dd– Testiranje zastavice C (Carry)

• JP C,a16 JP NC,a16 JR C,dd JR NC,dd– Testiranje zastavice S (Sign)

• JP M,a16 JP P,a16– Testiranje zastavice P (Parity/overflow)

• JP PO,a16 JP PE,a16– Z=Zero, NZ=Not Zero, C=Carry, NC=Not Carry, M=Minus, P=Positive

PO=Parity Odd, PE=Parity Even• DJNZ instrukcija – kombinacija dvije instrukcije “DEC B” i “JR

NZ,dd” koja se koristi kada treba dekrementirati neki brojač i testirati ga na nulu. Ne mijenja stanje zastavice Z.

Page 48: Z80_CPU

Instrukcije poziva• Potprogram se poziva CALL instrukcijom a iz njega se u glavni

program vraća RET instrukcijom• CALL instrukcija je kombinacija PUSH instrukcije (sadržaj

programskog brojila stavlja se na stog) i JP instrukcije (programski skok na prvu instrukciju potprograma). Može biti uvjetna i bezuvjetna.– CALL a16 CALL UV,a16

• RET instrukcija je kombinacija POP instrukcije (skida adresu povratka sa stoga u programsko brojilo) i JP instrukcije (skok na adresu povratka). Može biti uvjetna i bezuvjetna.– RET RET UV

• UV=C, NC, Z, NZ, P, M, PO, PE• RST (Restart) instrukcija je poseban slučaj bezuvjetne CALL

instrukcije. Poziva potprogram koji počinje na fiksnoj memorijskoj adresi te zauzima manje mjesta u memoriji. Koristi se za sistemske potprograme.– RST &&H ekvivalentno CALL 00&&H

• &&=00, 08, 10, 18, 20, 28, 30, 38

Page 49: Z80_CPU

Kontrola mikroprocesora

• NOP (No Operation) – trati vrijeme• SCF (Set Carry Flag) – postavlja zastavicu C• CCF (Complement Carry Flag) –

komplementira zastavicu C• HALT – zaustavlja program dok se

mikroprocesor ne resetira ili se ne dogodi prekid

Page 50: Z80_CPU

Kontrola prekida

• Prekidni način rada mikroprocesora namijenjen je posluživanju vanjskih jedinica u vremenski kritičnim slučajevima.

• Prekidni zahtjev vanjske jedinice može se dovesti na dvije nožice mikroprocesora– NMI –‘nemaskirani’ prekid jer se ne može programski

onemogućiti. Prekidni potprogram mora se upisati u memoriju počevši od adrese 0066H.

– INT - ‘maskirani’ prekid jer se može programski onemogućiti, odnosno dozvoliti. Postoje tri moguća načina prekidnog rada ‘0’ , ‘1’ i ‘2’.

Page 51: Z80_CPU

Instrukcije za kontrolu prekida

• IM 0 (Interrupt Mode 0)– Odabire prekidni način rada ‘0’ pri kojemu vanjska

jedinica daje naredbu ‘RST 00&&H’ mikroprocesoru. Prekidni potprogram se mora postaviti s početkom od adrese 00&&H. (&& može biti 00, 08, 10, 18, 20, 28, 30 ili 38).

• IM 1 (Interrupt Mode 1)– Odabire se prekidni način rada ‘1’ koji je sličan

nemaskiranom samo što se prekidni program treba postaviti s početkom od adrese 0038H u ROM-u.

Page 52: Z80_CPU

Instrukcije za kontrolu prekida

• IM 2 (Interrupt Mode 2)– Odabire se ‘vektorski način’ prekidnog rada pomoću kojeg se

prekidna rutina može postaviti bilo gdje u memoriju. Kada se dogodi prekid, mikroprocesor zahtjeva od vanjske jedinice 8-bitni podatak. Taj podatak je niži bajt prekidnog vektora dok se viši bajt uzima iz registra I. Prekidni vektor je zapravo adresa ‘pokazivača’. Pokazivač je 16-bitni podatak koji pokazuje na adresu prve naredbe prekidne rutine. Niži bajt adrese prve naredbe nalazi se na adresi pokazivača a viši bajt na sljedećoj adresi. Prekidni vektor može biti bilo koja parna adresa (bit 0 u adresi mora biti ‘0’), dok pokazivač može biti bilo koja lokacija memorije, odnosno ROM-a.

Page 53: Z80_CPU

Instrukcije za kontrolu prekida

• EI (Enable Interrupt)– Omogućenje nožice INT – brisanje unutarnje

zastavice prekdida IF (Interrupt Flag)• DI (Disable Interrupt)

– Onemogućenje nožice INT – postavljanje zastavice IF.

• RETI (Return from Interrupt)– Povratak iz prekidnog potprograma INT nožice.

• RETN (Retrun from Nonmaskable Interrupt)– Povratak iz prekidnog potprograma RET nožice

Page 54: Z80_CPU

Pitanja za vježbu• Koja zastavice je moguće testirati instrukcijom JP?

– Z, C, P, S.• Koju instrukciju skoka moramo upotrijebiti za usporedbu jednakosti dva

broja?– JP Z,a16 ili JR Z,dd.

• Koje dvije instrukcije izvodi instrukcija CALL?– PUSH i JP.

• Gdje instrukcija RET pronalazi adresu povrataka i gdje je stavlja?– Na stogu i stavlja je u PC.

• Čemu je ekvivalentna instrukcija RST 20H?– CALL 0020H.

• Na koje načine je moguće izaći iz stanja HALT instrukcije.– Resetiranjem procesora– Prekidom

• Koju nožicu Z80 mikroprocesora kontroliraju EI i DI?– INT.

Page 55: Z80_CPU

Zadatak• Napisati program koji dijeli sadržaj registra C sa 7.

ORG 0000HLD A, CLD B, 0H

PON: INC BSUB 7JP C, ISP1JP Z, ISP2JP PON

ISP1: DEC BISP2: LD C, B

END

Page 56: Z80_CPU

ORG 0066H

PUSH AF

PUSH BC

EXX

PUSH DE

PUSH HL

RETN

Zadatak• Napisati prekidni potprogram za NMI koji sprema stanja registara

opće namjene na stog te zamjenjuje sadržaje glavnog i alternativnog skupa registara.

Page 57: Z80_CPU

Zadatak• Mikroprocesor radi u ‘IM 2’. Spojene su 3 periferne jedinice od

kojih svaka može izazvati prekid koji traži drugačiju obradu. Poznato je da prva jedinica ima prekidni vektor 00h, druga 02h a treća 04h te da prekidna rutina prve jedinice počinje na 1000h, druge na 2000h a treće na 3000h. Potrebno je definirati stranicu za prekidne vektore.

LD A,0FFH

LD I,A

LD HL,1000H

LD (0FF00H),HL

LD HL,2000H

LD (0FF02H),HL

LD HL,3000H

LD (0FF04H),HL