Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Mikroprocesor Z80 lista rozkazów

Podobne prezentacje


Prezentacja na temat: "Mikroprocesor Z80 lista rozkazów"— Zapis prezentacji:

1 Mikroprocesor Z80 lista rozkazów

2 Przegląd listy rozkazów
Lista rozkazów - spis treści /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

3 Z80 - lista rozkazów /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

4 Z80 - lista rozkazów /34 LD r1,(rx+ddU2) ; r1  M(rx+ddU2) rx = IX,IY , ddU2 = 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

5 Z80 - lista rozkazów /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

6 Z80 - lista rozkazów /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

7 Z80 - lista rozkazów /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

8 Z80 - lista rozkazów /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

9 Z80 - lista rozkazów /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

10 Z80 - lista rozkazów /34 CP s ; A ? s : relacja CY Z ; A < s ; A = s ; A > s 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

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

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

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

14 5. Rozkazy obrotów i przesunięć
Z80 - lista rozkazów /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’  CY 7  s’  CY 7  s’  CY 7  s’ 

15 Z80 - lista rozkazów /34

16 Z80 - lista rozkazów /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:= s’=A,B,C,D,E,H,L,(HL),(IX+ddU2),(IY+ddU2) RES b,s’ ; s’.b := 0

17 Z80 - lista rozkazów /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

18 Z80 - lista rozkazów /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)

19 Przykład wykorzystania rozkazów LDIR oraz LDDR
Z80 - lista rozkazów /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

20 Z80 - lista rozkazów /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

21 JP adr ; PC:=adr , adr - adres 16-bitowy
Z80 - lista rozkazów /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

22 Z80 - lista rozkazów /34

23 Z80 - lista rozkazów /34

24 Z80 - lista rozkazów /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

25 Z80 - lista rozkazów /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

26 Z80 - lista rozkazów /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

27 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”

28 Z80 - lista rozkazów /34

29 Z80 - lista rozkazów /34

30 Zasady programowania w asemblerze Z80 (i nie tylko)
Z80 - lista rozkazów /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.

31 Zasady programowania... - c.d.
Z80 - lista rozkazów /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.

32 Z80 - przykłady procedur 32/34
1. Konwersja NB na BCD – metodą tablicy wag bitów dla 1 bajtu: L=0..0FFh  LBCD= (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

33 Z80 - lista rozkazów /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, ;LBCD:=0 ld hl,tabwag ;HL->tablica wag w BCD ld b, ;licznik bitow

34 Z80 - lista rozkazów /34 bb1: rr c jr nc,bb ;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


Pobierz ppt "Mikroprocesor Z80 lista rozkazów"

Podobne prezentacje


Reklamy Google