V.) Számítógép architektúrák Digitális technika V.) Számítógép architektúrák
Számítógépek Programozható műveletvégző, adatfeldolgozó Tárolás: Adatok Műveletsor
Neumann-elv Bináris Műveletvégzés → Aritmetika Tárolás → Memória Be-, kimenet → Perifériák Vezérlés → Vezérlő egység Aritmetika Program Vezérlő Kimenet Memória
4 címes utasítás-szervezés 5 mezős utasítás: Következő utasítás címe Operációs kód Pl..: +, -, *, /… Operandus 1 címe Operandus 2 címe Eredmény cím Redundás Nagy méret Programszámláló (PC) Automatikus inkrementálás Felülírható Akkumulátor
1 címes utasítás szervezés Művelet / Operációs kód Cím Cím = f ( Operációs Kód ) Cím: Adatcím Adat Utasítás cím
1 címes µP felépítése Flag ALU Bemeneti reg. Kimeneti reg. Akku Átmenti reg. Vezérlő CLK Dekóder Utasítás regiszter = Op. kód Cím Memória címreg. Adatregiszter PC Memória
Korszerűbb µP felépítés → C(entral) P(rocessed) U(nit) Külső memória Külső periféria illesztők Perifériák Vezérlő egység Memória CPU RAM ROM I/O 1 I/O 2 I/O N Legkorszerűbb felépítés
Intel 8085-ös CPU oszcillátorhoz kötve GND X1 oszcillátorhoz kötve VCC GND X2 HOLD ← másik Master lefoglalta a sínt CPU resetelve ← Reset Out HLDA → fogadta a másik Master kérését Soros kimeneti vonal ← SOD CLK OUT → fosc / 2 Soros bemeneti vonal → SID RESET IN ← PC = 0, Regiszterek törlése Nem maszkolható Restart interrupt → Trap READY ← külső memória R/W műveletre kész Restart Interrupt → RST 7.5 IO / M → IO / Memória művelet, státusz Restart Interrupt → RST 6.5 S1 → státusz Restart Interrupt → RST 5.5 RD → adatbusz kész az olvasásra Interrupt → INTR WR → adatbuszon az adat már készen áll Interrupt észlelve ← INTA ALE → címtároló engedélyezése AD0 S0 → státusz AD1 A15 AD2 A14 Cím-, és adatjel Multifunkciós, Tri-State AD3 A13 AD4 A12 Címjel, Tri-State AD5 A11 AD6 A10 AD7 A9 +5V VSS A8
8085-ből épült rendszer
8085-ös blokkvázlata Megsz. kezelő. Soros I/O Átmenti reg. Műv. reg. IntA RST6.5 Trap SID SOD Intr RST5.5 RST7.5 Intr Megsz. kezelő. Soros I/O A(kku) Átmenti reg. Műv. reg. B reg. C reg. Flag D reg. E reg. H reg. L reg. ALU Verem pointer (SP) Ut. dekóder Program Száml. (PC) +/- cím tároló X1 Időzítés és vezérlés X2 Cím buffer Adat/Cím buff. CLK OUT RD WR S0 S1 IO/M HLDA Reset out Reset In Ready ALE HOLD AD0 – AD7 A8 – A15
Programkód elkészítése 0000H 1 A-ba 32D Assembly kód 0001H 0002H B-be 11D 0003H EEPROM memória MVI A, 32D MVI B, 11D ADD B . STA 8000H HLT 0004H A és B összeadása Assembly fordító és programozó 7FFEH 1 x STOP 7FFFH 8000H 8001H RAM memória FFFBH x FFFCH FFFDH FFFEH FFFFH
Alaputasítások végrehajtása (Általában) Utasítás = Művelet + Operandus címe Műveleti kód → utasítás hossza Utasítás hossza: 1, 2, 3 byte (+ 0, 1, 2 byte)
Assembly nyelv utasításai Adatmozgatók Aritmetikai és Logikai Ugró: Feltétel nélküli Feltételes Szubrutin hívó Vegyes I/O kezelés Megszakítás vezérlők
1) Adatmozgató utasítások MOV r1, r2 (r2) → (r1) MOV r, M ((H)(L)) → (r) MOV M, r (r) → ((H),(L)) MVI r, data data → (r), 2B-os MVI M, data data → ((H)(L)), 2B-os LHLD addr M → (H)(L), 3B-os XCHG (H) ↔ (D), (L) ↔ (E), 1B-os 1 D S 1 D 1 S r: 8085-ös belső regisztere: 000 B; 001 C; 010 D; 011 E; 100 H; 101 L; 111 A(kku) M: külső memória 1 „rekeszének” címe D: cél regiszter kiválasztó bit S: forrás regiszter kiválasztó bit ((H)(L)): a H és L regiszterekben lévő memória címre történik
2) Aritmetikai és Logikai utasítások ADD r (A) + (r) → (A) ADD M (A) + ((H)(L)) → (A), kód: 86H, 2B-os ADI data (A) + data → (A), kód: C6H, 2B-os ADC r ADC M ACI data SUB r (A) - (r) → (A) SUB M (A) - ((H)(L)) → (A) SUI data (A) - data → (A) ANA r (A) & (r) → (A) ANA M (A) & ((H)(L)) → (A) ANI data (A) & data → (A), ORA r / M / data VAGY kapcsolat XRA r / M / data kizáró VAGY kapcsolat INR r / M Inkrementálás DCR r / M Dekrementálás CMP r / M Komparálás CMA Komplemetálás (Akku) PCHL (H,L) → (PC) SPHL (H,L) → (SP)
3) Ugró utasítások A feltétel a Flag regiszter tartalma. Flag regiszter felépítése: S: SIGNUM, előjel flag, S = 0 ↔ eredmény pozitív Cy: CARRY, átvitel flag, Cy = 1 ↔ volt átvitel Ac: járulékos átvitel flag Z: ZERO flag, Z = 1 ↔ művelet eredménye = 0 P: paritás flag, P = 0 ↔ eredmény páros X5: alól/felül csordulást jelző flag V: túlcsordulás flag. S Cy Ac Z P X5 V -
Ugró utasítások JMP addr feltétel nélkül, kód: C3H, 3B Feltételes ugró utasítás: JZ addr ugrik, ha Z(ero) flag = 1, CCC = 001B JNZ addr ha Z flag = 0, CCC = 000B JC addr ha C(arry) flag = 1, CCC = 011B JNC addr ha C flag = 0, CCC = 010B JPO addr ha a paritás páratlan, CCC = 100B JPE addr ha a paritás páros, CCC = 101B 1 C
4) Szubrutin hívás, utasításai Szubrutin: a kódban egyszer definiált eljárás, melyet akárhányszor hívhatunk meg, használhatunk fel. ► MVI B, 3D ;ez lesz a szorzó MVI C, 10D ;ez a szorzandó CALL SZOR ;szorzo szubrutin meghívasa CALL KIIR ;kiiro szubrutin meghivasa . SZOR: ;szubrutin fejléce PUSH PSW ;A es flag-ek mentese a verembe DCR B ;B=B-1 MOV A, C ;C masolasa A-ba ADD C ; A=A+C DCR B ;B=B-1 JNZ 13A1H ;visszaugras, ha meg kell szorozni MOV D, A ;eredmeny (A) mentese D-be POP PSW ;hivast megelozo alapot beallitasa RET ;visszatoltes, visszaugras END A= B= C= D= ZF= 20 10 30 2 3 1 10 30 1
Szubrutin hívás CALL „utasítás” SP-be az aktuális PC cím beírása (ide tér vissza), szubrutin hívása, 3B, kód: CD RET SP-ből PC feltöltése, 1B, kód: C9H
5) Soros IO vezérlő utasítások SIM ”A” 7. bitjét kiteszi a SOD vonalra, 1B, kód: 30H RIM ”A” regiszter 7. bitjébe menti a SID vonal állapotát, 1B
6) Megszakítás kezelés µP-ban „főprogram” fut. Külső periféria kiszolgálást kér. A µP elmenti aktuális állapotát (PC, Flag regiszter, regiszterek), majd meghívja a megszakítást lekezelő „megszakítási szubrutint”. Jelzés lehet: Belső interrupt kezelővel (TRAP, RST vonalak) Külső IC-vel EI Enable Interrupt, megszakítás engedélyezése, 1B, FBH DI Disable Interrupt, megszakítás tiltása, 1B, F3H Megszakítások egymásba „skatulyázhatók” (ha a prioritás engedi) Megszakítási szubrutin felépítése: µP állapotának mentése (PUSH) EI? Megszakítási program Állapot visszaállítása (POP) RET A µP az INTA kimeneten jelzi a külvilág (megszakítást kérő felé), hogy a megszakítás regisztrálva lett
Belső megszakítás kezelő IntA RST6.5 Trap 8 prioritási szint: IT0→ 0000H IT1 → 0008H . TRAP →0024H RST5.5 →002CH RST6.5 →0034H RST7.5 →003CH Intr RST5.5 RST7.5 Intr Megsz. kezelő. INTR7.5: maszkolható, 1. legnagyobb prioritás, felfutó élre aktív INTR6.5: maszkolható, 2. legnagyobb prioritás, szintre érzékeny INTR5.5: maszkolható, 3. legnagyobb prioritás, szintre érzékeny TRAP (RST4.5):nem tiltható 4.legnagyobb prioritás INTR: maszkolható (tiltható), legkisebb prioritású
D(irect) M(memory) A(cces) mód HOLD HLDA HOLD bemeneten jelezheti egy másik Master a µP felé, hogy le akarja foglalni a sínt. HLDA kimeneten jelzi a µP , hogy elengedte a sínt.
Adat címzési módok: A) Közvetlen operandusú utasításban van az adat. Pl.: ADI 32D µP belső Regiszterei B A PC SP Műveleti kód + Adat Memória Cím információ Adat információ Regiszter utalás
B) Direkt címzés A műveleti kód mellet megtalálható az operandus memória címe. Pl.: JNZ 1345H (itt van az operandus). Utasítás 3B-os!!! µP belső Regiszterei B A PC SP Műveleti kód + Cím Memória Operandus Cím információ Adat információ Regiszter utalás
C) Indirekt címzés A műveleti kód által hivatkozott regiszter/cím az operandus címét tartalmazza H, L regiszter pár tartalmazza a címet. Pl.: MVI M, 11D µP belső Regiszterei B A PC SP Műveleti kód + Cím Memória Cím Operandus Cím információ Adat információ Regiszter utalás
D) Bázis regiszteres címzés Műveleti kódban utalás az operandust tartalmazó regiszterre. Pl.: MOV A, B µP belső Regiszterei B A PC SP Műveleti kód + Regiszter Memória Cím információ Adat információ Regiszter utalás
E) PC relatív címzés A címet a PC és a műveleti kód (~offszet) együttesen adják 0D, 1D, 2D, …nD µP belső Regiszterei B A PC SP Műveleti kód + Offszet Memória Operandus0 Operandus1 Operandus2 . Operanuds n + Cím információ Adat információ Regiszter utalás
F) Indexelt címzés A címet a PC és valamely regiszter tartalma (~offszet) együttesen adják µP belső Regiszterei B A PC SP Műveleti kód Memória Operandus 0D, 1D, 2D, …nD + Cím információ Adat információ Regiszter utalás