Upload
josip
View
3
Download
1
Embed Size (px)
DESCRIPTION
mikroprocesor Z80
Citation preview
Mikroprocesor Z80
Osnovne karakteristike 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
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)
• Podaci se u računalu nalaze u binarnom obliku• Bit je osnovna jedinica informacije• 1kb = 210b = 1024b
Zapis broja u digitalnom računalu
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
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
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...
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
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
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
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
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
Mikroprocesor Z80
Asemblerski jezikStrojni jezik
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.
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.
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
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
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
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)
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
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)
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
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
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
Aritmetičke i logičke instrukcije
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
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
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
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
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
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
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
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
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
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
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
Instrukcije rotacije• Rotiranje u lijevo i desno
RLCY
RRCY
Cirkularno rotiranje u lijevo i desno
RLC
CY
RRC
CY
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
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
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
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
Naredbe za upravljanje programom
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
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.
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
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
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’.
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.
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.
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
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.
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
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.
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