Intel 8080

micro-procesor pe 8 biți
Intel 8080
Microprocesor
Informație generală
Lansataprilie 1974; acum 50 ani (1974-04)–1990; acum 34 ani (1990)[1]
Vândut deIntel
Proiectat deIntel
Fabricanți principaliIntel
Set de instrucțiuni8080
Endianitatelittle endian[*][[little endian (byte order in computer memory)|​]]  Modificați la Wikidata
Performanța
Frecvența de ceas maximă a UCPMHz până la 3.125 MHz
SocluriDIP40
Pachete40-pin DIP
Arhitectura și clasificarea
Specificații fizice
Nuclee1

Intel 8080 este al doilea microprocesor produs de Intel. S-a lansat în luna aprilie a anului 1974 și este o variantă îmbunătățită a Intel 8008 fără a fi compatibil cu acesta. Inițial putea să ruleze la o viteză de 2 MHz, dar o revizuire a acestuia numită 8080A-1 (cunoscută și ca 8080B) putea să ruleze la o viteză de 3.125 MHz. Intel 8080 are nevoie de două circuite integrate pentru a funcționa, generatorul de ceas i8224 și de controlorul de bus i8228.

Descriere

modificare

Registre interne

modificare

Microprocesorul conține 7 registre principale care pot reține 8 biți (A,B,C,D,E,H și L), unde A este registrul primar numit accumulator și celelalte 6 pot fi utilizate individual sau în perechi pentru a forma registre care pot reține 16 biți (BC,DE,HL) depinzând de instrucțiune. Pe lângă cei 7 registre principale, mai are un registru numit indicatorul de stivă și un registru numit contor program.

Steaguri

modificare

Procesorul menține niște steaguri care indică rezultate aritmetice și logice. Doar unele instrucțiuni afectează steagurile.

Steagurile sunt următoarele:

  • Semn (S sau Sign), este înălțat dacă rezultatul este negativ
  • Zero (Z), este înălțat dacă rezultatul este nul.
  • Paritate (P sau Parity), este înălțat dacă numărul de 1 biți in rezultat sunt pari
  • Căra (C sau Carry), este înălțat dacă ultima adunare rezultă în a căra sau dacă ultima scădere are nevoie de împrumutare.

Exemplu cod

modificare

Următorul cod sursă este o subrutină numită memcpy care copiază o bucată din memorie de o anumită dimensiune în altă locație.

; memcpy
;
; Regiștrii de intrare
;       BC - Numărul de baiți care trebuie să fie copiați
;       DE - Adresa sursei
;       HL - Adresa destinației
;
; Regiștrii de ieșire
;       BC - Zero

            org     1000h       ;Originea la 0x1000 sau 1000h
memcpy      public
            mov     a,b         ;Copiază registrul B în registrul A
            ora     c           ;Aplică operațiunea pe biți OR pe A și C și păstrează rezultatul în registrul A
            rz                  ;Întoarce-te dacă steagul zero este înălțat
loop:       ldax    d           ;Încarcă A din adresa indicată de DE
            mov     m,a         ;Salvează A în adresa indicată de HL
            inx     d           ;Crește DE
            inx     h           ;Crește HL
            dcx     b           ;Scade BC (nu afectează steagurile)
            mov     a,b         ;Copiază B în A
            ora     c           ;A = A | C (setează zero)
            jnz     loop        ;Sari la 'loop:' dacă steagul zero nu este înălțat   
            ret                 ;Întoarcere

Descrierea pinilor

modificare
  1. A10, pin de ieșire, pinul de adresare 10
  2. GND, împământare
  3. D4 |
  4. D5 |
  5. D6 |
  6. D7 |
  7. D3 |= bidirecționali, pinii de date
  8. D2 |
  9. D1 |
  10. D0 |
  11. -5V
  12. RESET, pin de intrare, atunci când acesta este setat la 0 sau împământare, procesorul va începe să execute cod de la adresa 0000.
  13. HOLD, pin de intrare, cerere pentru acces direct al memoriei, procesorul își va deconecta pinii de adresare și pinii de date
  14. INT, pin de intrare, cerere întrerupere
  15. φ2, pin de intrare
  16. INTE, pin de ieșire, procesorul are două instrucțiuni pentru a seta nivelul acestui pin, de obicei în calculatoarele simple este folosit pentru a acționa diverse lucruri.
  17. DBIN, pin de ieșire, procesorul citește din memorie sau din pinii de intrare
  18. WR, pin de ieșire, procesorul scrie în memorie
  19. SYNC, pin de ieșire
  20. +5V
  21. HLDA, pin de ieșire, confirmare acces direct al memoriei, procesorul se va conecta la pinii de adresare și pinii de date
  22. φ1, pin de intrare
  23. READY, pin de intrare, prin acest pin se poate suspenda procesorul
  24. WAIT, pin de ieșire, procesorul indică dacă este în stare de așteptare
  25. A0 |
  26. A1 |=pini de ieșire, pini de adresare
  27. A2 |
  28. +12V, trebuie să fie conectat ultimul și primul deconectat
  29. A3 |
  30. A4 |
  31. A5 |
  32. A6 |
  33. A7 |
  34. A8 |
  35. A9 |= pini de ieșire, pini de adresare
  36. A15 |
  37. A12 |
  38. A13 |
  39. A14 |
  40. A11 |