Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Mikroprocesor Z80 lista rozkazów. Przegląd listy rozkazów Rozkazy przesłań 1-bajtowych Rozkazy przesłań 2-bajtowych Rozkazy zamiany Rozkazy arytmetyczno-logiczne.

Podobne prezentacje


Prezentacja na temat: "Mikroprocesor Z80 lista rozkazów. Przegląd listy rozkazów Rozkazy przesłań 1-bajtowych Rozkazy przesłań 2-bajtowych Rozkazy zamiany Rozkazy arytmetyczno-logiczne."— Zapis prezentacji:

1 Mikroprocesor Z80 lista rozkazów

2 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 Lista rozkazów - spis treści 2/34

3 Z80 - lista rozkazów 3/34 1. Rozkazy przesłań jednobajtowych LDr1,r2; r1 r2, r1,r2 = A,B,C,D,E,H,L LDr1,(HL); r1 M(HL) LD(HL),r2; M(HL) r2 LDr,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 4/34 LDA,(BC); A M(BC) LDA,(DE); A M(DE) LD(BC),A; M(BC) A LD(DE),A; M(DE) A LDA,(adr); A M(adr), adr - adres 16-bitowy LD(adr),A; M(adr) A LDA,I; A ILDI,A; I A LDA,R; A RLDR,A; R A LDr1,(rx+dd U2 ); r1 M(rx+dd U2 ) rx = IX,IY, dd U2 = LD(rx+dd U2 ),r2; M(rx+dd U2 ) r2

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

6 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

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

8 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+dd U2 ),(IY+dd U2 ),n ADC A,s; A:=A+s+CY

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

10 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+dd U2 ),(IY+dd U2 ) DEC s; s:=s-1 DAA; korekcja dziesiętna po operacji na BCD, ;np:lda,18h ;ldb,25h ;adda,b;A:=3Dh ;daa;A:=43h NEG; A:= (-A) U2 inaczej: A:=0-A

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

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

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

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

15 Z80 - lista rozkazów 15/34

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

17 Z80 - lista rozkazów 17/34 7. Rozkazy arytmetyki 16-bitowej ADDHL,pp; HL:=HL+pp, pp = BC,DE,HL,SP ADDIX,pp; IX:=IX+pp, pp = BC,DE,IX,SP ADDIY,pp; IY:=IY+pp, pp = BC,DE,IY,SP ADCHL,pp; HL:=HL+pp+CY, pp = BC,DE,HL,SP SBCHL,pp; HL:=HL-pp-CY, pp = BC,DE,HL,SP INCpp; pp:=pp+1, pp = BC,DE,HL,SP,IX,IY DECpp; pp:=pp-1, pp = BC,DE,HL,SP,IX,IY

18 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)

19 Przykład wykorzystania rozkazów LDIR oraz LDDR Procedura kopiująca ilość bajtów począwszy od adresu skąd pod adresdokąd. Możliwe przypadki: ldbc,ilosc ldde,dokad ldhl,skad callprzepisz Z80 - lista rozkazów 19/34 LDDR

20 Z80 - lista rozkazów 20/34 przepisz:push hl; przechowanie HL na stosie anda; CY:=0 sbchl,de; CY=1 gdy skad < dokad pophl jrnc,etldir; skok gdy dokad skad addhl,bc dechl; skad := skad+ilosc -1 exde,hl; HL := dokad addhl,bc dechl; HL := dokad = dokad+ilosc -1 exde,hl; DE := dokad lddr; przepisanie od końca ret etldir:ldir; przepisanie normalne ret

21 9. Rozkazy skoków JPadr; PC:=adr, adr - adres 16-bitowy JPw,adr; jeżeli w to PC:=adr JP(HL); PC:=HL JP(IX); PC:=IX JP(IY); PC:=IY JRadrel; PC:=PC+adrel JRw,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 Z80 - lista rozkazów 21/34 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 22/34

23 Z80 - lista rozkazów 23/34

24 Z80 - lista rozkazów 24/ 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 25/ Rozkazy we/wy jednobajtowe: INA,(p); A Port(p), p = 00h..0FFh OUT(p),A; Port(p) A, p A7..A0 INr,(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 26/ Rozkazy sterujące NOP; pusty rozkaz nic nie rób HALT; zatrzymanie mikroprocesora DI; zablokowanie przerwań maskowalnych EI; odblokowanie przerwań maskowalnych IMm; wybór trybu obsługi przerwań maskowalnych, m = 0,1,2

27 Z80 - lista rozkazów 27/ Rozkazy nieoficjalne LDr,rx; r = B,C,D,E,HX,LX,A przy rx = HX,LX albo LDrx,r; r = B,C,D,E,HY,LY,A przy rx = HY,LY ADDA,rxANDrx ADCA,rxORrx SUBrxXORrx SBCA,rxCPrx INCrxDECrx SLIs; 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),rSRA(RX+dd),r SRL(RX+dd),rSLI(RX+dd),r SETb,(RX+dd),rRESb,(RX+dd),r

28 Z80 - lista rozkazów 28/34

29 Z80 - lista rozkazów 29/34

30 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.

31 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.

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

33 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

34 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 daa 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. Przegląd listy rozkazów Rozkazy przesłań 1-bajtowych Rozkazy przesłań 2-bajtowych Rozkazy zamiany Rozkazy arytmetyczno-logiczne."

Podobne prezentacje


Reklamy Google