Mikroprocesor Z80 lista rozkazów

Slides:



Advertisements
Podobne prezentacje
Taktowanie mikroprocesorów Jednostka sterująca mikroprocesora jest układem sekwencyjnym synchronicznym, czyli wymagającym sygnału taktującego (zegarowego).
Advertisements

I część 1.
Tryby adresowania Prawie każda operacja wykonywana przez mikroprocesor wykonywana jest na pewnych argumentach (lub argumencie). Sposoby wskazywania argumentów.
Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Joanna Sawicka Wydział Nauk Ekonomicznych, Uniwersytet Warszawski
Wprowadzenie do informatyki Wykład 6
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Algorytmy – różne przykłady
Mikroprocesory i procesory sygnałowe
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Lista rozkazów Działanie mikroprocesora jest kontrolowane poprzez rozkazy (instrukcje). Dla każdego typu mikroprocesora istnieje specyficzny zbiór rozkazów,
Przykład - Debugger Język pewnego procesora zawiera następujące instrukcje: MOV l, r l:=r ADD l, r l := l + r SUB l, r l := l - r JMP instr skok.
Mapa pamięci mikrokontrolera
Wykład 5 Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył
Podstawowe składniki funkcjonalne procesora i ich rola.
Alokacja pamięci struct Test {char c; int n; double x; } st1; st1 cnxcnx
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Wprowadzenie do informatyki Wykład 5
Podstawy informatyki Powtórka Grupa: 1A Prowadzący: Grzegorz Smyk
Temat nr 10: System przerwań
ARCHITEKTURA WEWNĘTRZNA KOMPUTERA
Mikroprocesory i procesory sygnałowe
UKŁADY SZEREGOWO-RÓWNOLEGŁE
Dyskretny szereg Fouriera
Transformacja Z (13.6).
Mikroprocesory i mikrokontrolery
Tytuł prezentacji Warszawa, r..
Automatyka Wykład 3 Modele matematyczne (opis matematyczny) liniowych jednowymiarowych (o jednym wejściu i jednym wyjściu) obiektów, elementów i układów.
Urządzenia zewnętrzne
przykładowy 8-bitowy mikroprocesor uniwersalny CISC
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
MCS51 - wykład 2.
Wykorzystanie procedur. Współużywalność procedur Współbieżność procesów Wymiana informacji z procedurami Procedury 2/21.
MCS51 - wykład 5.
Mikroprocesor Z80 przerwania.
MCS51 - wykład 6.
Architektura systemów komputerowych jesień 2013
Synteza układów sekwencyjnych z (wbudowanymi) pamięciami ROM
Wyrażenia algebraiczne
Synteza logiczna w projektowaniu układów cyfrowych
Raport z badań termowizyjnych – RECTICEL Rys. 1a. Rozdzielnia RS14 Temperatura maksymalna 35,27 o C Rys. 1b. Rozdzielnia RS14 (wizyjny) 3.
TABLICE C++.
Sekwencyjne bloki funkcjonalne
KALENDARZ 2011r. Autor: Alicja Chałupka klasa III a.
1/34 HISTORIA BUDOWY /34 3/34 6 MAJA 2011.
Podstawy adresowania hostów w sieciach komputerowych
Podstawy działania wybranych usług sieciowych
Architektura systemów komputerowych (jesień 2013)
Analiza wpływu regulatora na jakość regulacji (1)
Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:adda,r0 ;dodanie do akumulatora.
Lekcja 13 Strona 15. Lekcja 13 Strona 16 Lekcja 13 Strona 17 Vertical primary and secondary Tesla coil Jacobs ladder.
Przerwanie ang. interrupt.
Kalendarz 2011r. styczeń pn wt śr czw pt sb nd
Podstawy informatyki 2013/2014
© GfK 2012 | Title of presentation | DD. Month
+21 Oczekiwania gospodarcze – Europa Grudzień 2013 Wskaźnik > +20 Wskaźnik 0 do +20 Wskaźnik 0 do -20 Wskaźnik < -20 Unia Europejska ogółem: +14 Wskaźnik.
Matematyka i system dwójkowy
EcoCondens Kompakt BBK 7-22 E.
Prezentacja Multimedialna
User experience studio Użyteczna biblioteka Teraźniejszość i przyszłość informacji naukowej.
Asembler MCS51. Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:adda,r0 ;dodanie.
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
Przerzutniki bistabilne
Kalendarz 2020.
Elementy geometryczne i relacje
Technika Mikroprocesorowa 1
Synteza logiczna w projektowaniu układów cyfrowych
Mikrokontrolery System przerwań
Zapis prezentacji:

Mikroprocesor Z80 lista rozkazów

Przegląd listy rozkazów Lista rozkazów - spis treści 2/34 Przegląd listy rozkazów Rozkazy przesłań 1-bajtowych Rozkazy przesłań 2-bajtowych Rozkazy zamiany Rozkazy arytmetyczno-logiczne 1-bajtowe Rozkazy przesunięć i obrotów Rozkazy bitowe Rozkazy arytmetyki 16-bitowej Rozkazy operacji blokowych Rozkazy skoków Wywołania procedur i powroty Operacje we/wy Rozkazy sterujące Wpływ rozkazów na flagi Zasady programowania w asemblerze Z80 Przykłady programowania

Z80 - lista rozkazów 3/34 1. Rozkazy przesłań jednobajtowych LD r1,r2 ; r1  r2 , r1,r2 = A,B,C,D,E,H,L LD r1,(HL) ; r1  M(HL) LD (HL),r2 ; M(HL)  r2 LD r,n ; r  n , r = A,B,C,D,E,H,L,(HL), (IX+dd), (IY+dd) ; n - stała jednobajtowa

Z80 - lista rozkazów 4/34 LD r1,(rx+ddU2) ; r1  M(rx+ddU2) rx = IX,IY , ddU2 = -128..127 LD (rx+ddU2),r2 ; M(rx+ddU2)  r2 LD A,(BC) ; A  M(BC) LD A,(DE) ; A  M(DE) LD (BC),A ; M(BC)  A LD (DE),A ; M(DE)  A LD A,(adr) ; A  M(adr) , adr - adres 16-bitowy LD (adr),A ; M(adr)  A LD A,I ; A  I LD I,A ; I  A LD A,R ; A  R LD R,A ; R  A

Z80 - lista rozkazów 5/34 2. Rozkazy przesłań dwubajtowych LD pp,nn ; pp  nn , pp = BC,DE,HL,SP,IX,IY ; ppL  nnL , ppH  nnH , nn - stała 2-bajtowa LD pp,(adr) ; ppL  M(adr) , ppH  M(adr+1) , adr - adres 16-bitowy LD (adr),pp ; M(adr)  ppL , M(adr+1)  ppH LD SP,pp’ ; SP  pp’ , pp’ = HL,IX,IY

Z80 - lista rozkazów 6/34 PUSH pp” ; SP:=SP-1, M(SP)  pp”H , SP:=SP-1, M(SP)  pp”L ; pp” = AF,BC,DE,HL,IX,IY POP pp” ; pp”L  M(SP) , SP:=SP+1 , pp”H  M(SP) , SP:=SP+1

Z80 - lista rozkazów 7/34 3. Rozkazy zamiany EXX ; przełączenie alternatywnych rejestrów BCDEHL EX AF,AF’ ; przełączenie alternatywnych par AF EX DE,HL ; zamiana: D  H , E  L EX (SP),HL ; zamiana: M(SP+1)  H , M(SP)  L EX (SP),IX ; zamiana: M(SP+1)  IXH , M(SP)  IXL EX (SP),IY ; zamiana: M(SP+1)  IYH , M(SP)  IYL

Z80 - lista rozkazów 8/34 4. Jednobajtowe rozkazy arytmetyczno-logiczne ADD A,s ; A:=A+s s = A,B,C,D,E,H,L,(HL),(IX+ddU2),(IY+ddU2),n ADC A,s ; A:=A+s+CY

Z80 - lista rozkazów 9/34 SUB s ; A:=A-s s = A,B,C,D,E,H,L,(HL),(IX+ddU2),(IY+ddU2),n SBC A,s ; A:=A-s-CY

Z80 - lista rozkazów 10/34 CP s ; A ? s : relacja CY Z ; A < s 1 0 ; A = s 0 1 ; A > s 0 0 INC s’ ; s’:=s’+1, s’=A,B,C,D,E,H,L,(HL),(IX+ddU2),(IY+ddU2) DEC s’ ; s’:=s’-1 DAA ; korekcja dziesiętna po operacji na BCD, ;np: ld a,18h ; ld b,25h ; add a,b ;A:=3Dh ; daa ;A:=43h NEG ; A:= (-A)U2 inaczej: A:=0-A

Z80 - lista rozkazów 11/34 AND s ; A:=A  s s = A,B,C,D,E,H,L,(HL),(IX+ddU2),(IY+ddU2),n

Z80 - lista rozkazów 12/34 OR s ; A:=A  s s = A,B,C,D,E,H,L,(HL),(IX+ddU2),(IY+ddU2),n

Z80 - lista rozkazów 13/34 XOR s ; A:=A  s s = A,B,C,D,E,H,L,(HL),(IX+ddU2),(IY+ddU2),n CPL ; A:= not(A)

5. Rozkazy obrotów i przesunięć Z80 - lista rozkazów 14/34 5. Rozkazy obrotów i przesunięć ; s’=A,B,C,D,E,H,L,(HL),(IX+ddU2),(IY+ddU2) RLC s’ RLCA ; jak RLC A RL s’ RLA ; jak RL A RRC s’ RRCA ; jak RRC A RR s’ RRA ; jak RR A CY 7  s’  0 CY 7  s’  0 CY 7  s’  0 CY 7  s’  0

Z80 - lista rozkazów 15/34

Z80 - lista rozkazów 16/34 6. Rozkazy bitowe SCF ; CY:=1 CCF ; CY:=not(CY) BIT b,s’ ; Z:=not(s’.b) , numer bitu b = 0..7 SET b,s’ ; s’. b:=1 s’=A,B,C,D,E,H,L,(HL),(IX+ddU2),(IY+ddU2) RES b,s’ ; s’.b := 0

Z80 - lista rozkazów 17/34 7. Rozkazy arytmetyki 16-bitowej ADD HL,pp ; HL:=HL+pp , pp = BC,DE,HL,SP ADD IX,pp ; IX:=IX+pp , pp = BC,DE,IX,SP ADD IY,pp ; IY:=IY+pp , pp = BC,DE,IY,SP ADC HL,pp ; HL:=HL+pp+CY, pp = BC,DE,HL,SP SBC HL,pp ; HL:=HL-pp-CY , pp = BC,DE,HL,SP INC pp’ ; pp’:=pp’+1 , pp’ = BC,DE,HL,SP,IX,IY DEC pp’ ; pp’:=pp’-1 , pp’ = BC,DE,HL,SP,IX,IY

Z80 - lista rozkazów 18/34 8. rozkazy blokowego przepisywania i przeszukiwania LDI ; M(DE)  M(HL), HL:=HL+1, DE:=DE+1, BC:=BC-1 LDD ; M(DE)  M(HL), HL:=HL-1, DE:=DE-1, BC:=BC-1 ; w obu rozkazach P/V:=1 gdy BC  0 LDIR ; powtarzanie operacji LDI aż do BC = 0 , P/V:=0 LDDR ; powtarzanie operacji LDD aż do BC = 0 , P/V:=0 CPI ; porównanie A ? M(HL), HL:=HL+1, BC:=BC-1 CPD ; porównanie A ? M(HL), HL:=HL-1, BC:=BC-1 CPIR ; powtarzanie operacji CPI aż do M(HL)=A lub BC = 0 CPDR ; powtarzanie operacji CPD aż do M(HL)=A lub BC = 0 ; w rozkazach porównania: P/V:=1 gdy BC  0 ; Z:=1 gdy A=M(HL)

Przykład wykorzystania rozkazów LDIR oraz LDDR Z80 - lista rozkazów 19/34 Przykład wykorzystania rozkazów LDIR oraz LDDR Procedura kopiująca “ilość” bajtów począwszy od adresu “skąd” pod adres “dokąd”. Możliwe przypadki: ld bc,ilosc ld de,dokad ld hl,skad call przepisz LDDR

Z80 - lista rozkazów 20/34 przepisz:push hl ; przechowanie HL na stosie and a ; CY:=0 sbc hl,de ; CY=1 gdy skad < dokad pop hl jr nc,etldir ; skok gdy dokad  skad add hl,bc dec hl ; skad’ := skad+ilosc -1 ex de,hl ; HL := dokad dec hl ; HL := dokad’ = dokad+ilosc -1 ex de,hl ; DE := dokad’ lddr ; przepisanie od końca ret etldir: ldir ; przepisanie normalne

JP adr ; PC:=adr , adr - adres 16-bitowy Z80 - lista rozkazów 21/34 9. Rozkazy skoków JP adr ; PC:=adr , adr - adres 16-bitowy JP w,adr ; jeżeli w to PC:=adr JP (HL) ; PC:=HL JP (IX) ; PC:=IX JP (IY) ; PC:=IY JR adrel ; PC:=PC+adrel JR w’,adrel ; jeżeli w’ to PC:=PC+adrel , w’ = Z , NZ , C , NC DJNZ adrel ; B:=B-1, jeżeli B0 to PC:=PC+adrel warunek w spełniony gdy flaga Z Z = 1 NZ Z = 0 C CY = 1 NC CY = 0 PO P/V = 0 PE P/V = 1 P S = 0 M S = 1

Z80 - lista rozkazów 22/34

Z80 - lista rozkazów 23/34

Z80 - lista rozkazów 24/34 10. Rozkazy wywołań procedur i powrotów CALL adr ; symulowanie PUSH PC, PC:=adr CALL w,adr ; jeżeli w to: CALL adr , warunek w - jak przy skokach RST k ; 1-bajtowe wywołanie procedury spod adresu ; k = 00, 08h, 10h, 18h, 20h, 28h, 30h, 38h RET ; symulowanie POP PC RET w ; jeżeli w to: RET RETI ; powrót z procedury obsługi przerwania maskowalnego RETN ; powrót z procedury obsługi przerwania niemaskowalnego

Z80 - lista rozkazów 25/34 11. Rozkazy we/wy jednobajtowe: IN A,(p) ; A  Port(p) , p = 00h..0FFh OUT (p),A ; Port(p)  A , pA7..A0 IN r,(C) ; r  Port(BC) , r = B,C,D,E,H,L,A OUT (C),r ; Port(BC)  r, BCA15..A0 blokowe (w rozkazach tych BCA15..A0): INI ; M(HL)  Port(BC) , HL:=HL+1 , B:=B-1 , Z:=1 gdy B:=0 IND ; M(HL)  Port(BC) , HL:=HL-1 , B:=B-1 , Z:=1 gdy B:=0 INIR ; powtarzanie INI aż do B = 0 , Z:=1 INDR ; powtarzanie IND aż do B = 0 , Z:=1 OUTI ; Port(BC)  M(HL) , HL:=HL+1 , B:=B-1 , Z:=1 gdy B:=0 OUTD ; Port(BC)  M(HL) , HL:=HL-1 , B:=B-1 , Z:=1 gdy B:=0 OTIR ; powtarzanie OUTI aż do B = 0 , Z:=1 OTDR ; powtarzanie OUTD aż do B = 0 , Z:=1

Z80 - lista rozkazów 26/34 12. Rozkazy sterujące NOP ; pusty rozkaz “nic nie rób” HALT ; zatrzymanie mikroprocesora DI ; zablokowanie przerwań maskowalnych EI ; odblokowanie przerwań maskowalnych IM m ; wybór trybu obsługi przerwań maskowalnych, m = 0,1,2

Z80 - lista rozkazów 27/34 13. Rozkazy nieoficjalne LD r’,rx’ ; r’ = B,C,D,E,HX,LX,A przy rx’ = HX,LX albo LD rx’,r’ ; r’ = B,C,D,E,HY,LY,A przy rx’ = HY,LY ADD A,rx’ AND rx’ ADC A,rx’ OR rx’ SUB rx’ XOR rx’ SBC A,rx’ CP rx’ INC rx’ DEC rx’ SLI s’ ;  SLA s’ , INC s’ , s’=A,B,C,D,E,H,L,(HL),(IX+dd),(IY+dd) RLC (RX+dd),r” RRC (RX+dd),r” ; wynik operacji trafia także do rejestru RL (RX+dd),r” ; r” = A,B,C,D,E,H,L , RX = IX , IY RR (RX+dd),r” ; dd - 1-bajtowe przesunięcie w U2 SLA (RX+dd),r” SRA (RX+dd),r” SRL (RX+dd),r” SLI (RX+dd),r” SET b,(RX+dd),r” RES b,(RX+dd),r”

Z80 - lista rozkazów 28/34

Z80 - lista rozkazów 29/34

Zasady programowania w asemblerze Z80 (i nie tylko) Z80 - lista rozkazów 30/34 Zasady programowania w asemblerze Z80 (i nie tylko) 1. Wyzerowanie mikroprocesora sygnałem /RESET powoduje rozpoczęcie realizacji programu od PC=0000h (istnieją rozwiązania sprzętowe wymuszające na szynie adresów po /RESET inny niż wymieniony adres, a tylko niektóre mikroprocesory startują od niezerowego stanu PC). 2. Jednym z pierwszych rozkazów wykonywanych przez mikroprocesor po zerowaniu musi być rozkaz inicjujący SP. 3. Podczas inicjalizacji systemu (programowanie układów współpracujących z mikroprocesorem, inicjacja wartości początkowych zmiennych, wektorów przerwań, systemu obsługi przerwań) przerwania muszą być zablokowane. 4. Procedury obsługi przerwań powinny na swym początku składować na stosie zawartości rejestrów i zmiennych, na których będą operować, aby móc je odtworzyć przed zakończeniem obsługi przerwania.

Zasady programowania... - c.d. Z80 - lista rozkazów 31/34 Zasady programowania... - c.d. 5. Nie stosować rozkazów mikroprocesora z listy “nieoficjalnej”. 6. Przerwanie niemaskowalne /NMI powoduje wywołanie procedury jego obsługi zawsze od adresu 0066h i procedura ta winna kończyć się rozkazem RETN. 7. Przy pracy w trybie 1 obsługi przerwań maskowalnych, przerwanie /INT powoduje wywołanie procedury jego obsługi zawsze od adresu 0038h. 8. Tablica wektorów przerwań musi być alokowana od adresu parzystego (najlepiej od adresu który modulo 16 daje 0). 9. Procedury obsługi przerwań w trybie 2 (wektorowym) muszą kończyć się rozkazem RETI.

Z80 - przykłady procedur 32/34 1. Konwersja NB na BCD – metodą tablicy wag bitów dla 1 bajtu: L=0..0FFh  LBCD=0..255 (3 cyfry BCD - 2 bajty) Algorytm: TAB - 8 elementowa tablica wag bitów w BCD: i:=0 LBCD:=0 LBCD[0]:= LBCD[0]+TAB[i,0] korekcja BCD LBCD[1]:= LBCD[1]+TAB[i,1]+CY i:=i+1 i =8 ? N T Li = 1 ? 0 1 0 0 0 2 0 4 0 8 1 6 3 2 6 4 2 8 i,0 i,1 i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7

Z80 - lista rozkazów 33/34 ld a,(liczba) ;przygotowanie parametru ld c,a ;w rej.C call binbcd ;wywolanie procedury . . . ;procedura konwersji NB->BCD dla liczb 1-bajtowych ;parametry: C=liczba L w NB; ;wyniki: DE=liczba LBCD; ;zmiany: AF binbcd: push bc ;przechowanie rejestrow push hl ;na stosie ld de,0 ;LBCD:=0 ld hl,tabwag ;HL->tablica wag w BCD ld b,8 ;licznik bitow

Z80 - lista rozkazów 34/34 bb1: rr c jr nc,bb2 ;test bitu ld a,e ;A=LBCD[0] add a,(hl) ;A:=LBCD[0]+TAB[i,0] daa ld e,a ;odeslanie sumy do rej.E inc hl ;HL->starszy bajt TAB[i] ld a,d ;A=LBCD[1] adc a,(hl) ;A:=LBCD[1]+TAB[i,1]+CY ld d,a ;odeslanie sumy do rej.D jr bb3 bb2: inc hl ;przejscie do nastepnego bb3: inc hl ;elementu tablicy wag djnz bb1 pop hl ;odtworzenie rejestrow pop bc ;ze stosu ret tabwag: dwl 0001h,0002h,0004h,0008h, dwl 0016h,0032h,0064h,0128h