560 likes | 672 Views
CPU (Central Processing Unit) feladatai a végrehajtandó utasítás betöltése, a betöltött utasítás típusának megállapítása, az ezt követő utasítás címének megállapítása, ha kell, az operandus(ok) helyének megállapítása, ha kell, az operandus(ok) betöltése, az utasítás végrehajtása,
E N D
CPU (Central Processing Unit)feladatai • a végrehajtandó utasítás betöltése, • a betöltött utasítás típusának megállapítása, • az ezt követő utasítás címének megállapítása, • ha kell, az operandus(ok) helyének megállapítása, • ha kell, az operandus(ok) betöltése, • az utasítás végrehajtása, • ha kell, az eredmény helyének megállapítása, • ha kell, az eredmény tárolása, • az egész ciklus újra kezdése. 2. előadás
Központi memória (2.9. ábra) A programok és adatok tárolására szolgál. Bit: a memória alapegysége, egy 0-t vagy 1-et tartalmazhat. Memória rekesz (cella): több bit együttese. Minden rekesz ugyanannyi bitből áll. Minden rekeszhez hozzá van rendelve egy szám, a rekesz címe. Egy rekeszre a címével hivatkozhatunk. A rekesz a legkisebb címezhető egység. 2. előadás
Cím Rekesz/cella A rekesz hossza manapság legtöbbször 8 bit (byte ~ bájt). n a memória cellák száma Központi memória (2.9. ábra) Rekesz hossza 2. előadás
A bitek számarekeszenként néhány számítógép-történetileg érdekes, kereskedelmi forgalomba került gépen(2.10. ábra) 2. előadás
Bájtsorrend A legtöbb processzor több egymás utáni bájttal is tud dolgozni (szó – word, …). A legmagasabb helyértékű bájt a szóban a legalacsonyabb címen: legmagasabb címen: nagy (big) endian kis (little) endian MSBfirst LSBfirst Most/Least Significant Byte first Ha egy 32 bites szó bájtjainak értéke rendre: a, b, c, d, akkor a szó értéke: a*2563+b*2562+c*256+d a+b*256+c*2562+d*2563 2. előadás
Bájtsorrend (2.11. ábra) A memória címek úgy vannak fölírva, hogy a legmagasabb helyértékű bájt van bal oldalon. 32 bites szó 32 bites szó 2. előadás
Bájtsorrend (12. ábra) A szövegek karaktereit mindkét esetben növekvő bájt sorrendben helyezik el A TEXT szöveg és az 12345678 hexadecimális szám elhelyezése a két géptípuson Problémák a gépek közötti kommunikációban! 2. előadás
Kódolás: adat + ellenőrző bitek = kódszó. Két kódszó Hamming távolsága: az eltérő bitek száma. Pl.: 11001 és 11011 (Hamming) távolsága = 1. Hibaérzékelő kód: bármely két kódszó távolsága > 1: paritás bit. d hibás bit javítása: a kódszavak távolsága > 2d. Egy hibát javító kód (2.13. ábra): m adat, r ellenőrző bit, összesen n = m + r. 2m „jó” szó, + minden „jó” szónak n db „egyhibás” szomszédja van, ezért (1+ n)2m £ 2n = 2m+ r , 2m -mel egyszerűsítve: m + r +1 £ 2r, vagy másképp: m + r 2r szükséges. 2. előadás
Minden utasítás tartalmaz műveleti kódot. Ezen kívül tartalmazhat az operandusokra, eredményre vonatkozó információt. Utasítás típusok: • regiszter-memória utasítások: a regiszterek és a memória közötti adatforgalom (betöltés, tárolás). Ilyenkor egy regiszter és egy memória cím megadása szükséges a címrészen. • regiszter-regiszter utasítások: összeadás, kivonás, …Az eredmény is regiszterben keletkezik.Ilyenkor három regiszter megadása szükséges a címrészen. • … 2. előadás
Címzési módszerek Három cím: cél = forrás1 + forrás2. A memória sok rekeszt tartalmaz, de csak kevés regiszter van. Egy regiszter néhány bittel címezhető. Regiszterek használata rövidíti a címeket, de nyújtja a programot, ha az operandus csak egyszer kell. A legtöbb operandust többször használjuk. Implicit operandusok: • Két cím: regiszter2 = regiszter2 + forrás1. • Egy cím: akkumulátor = akkumulátor + forrás1. • Nulla cím: verem, pl. az IJVMIADD utasítása. 2. előadás
Operandus megadás • Közvetlen operandus (immediate operand): Az operandus megadása az utasításban (5.17. ábra) • Direkt címzés (direct addressing): A memóriacím megadása a címrészen. Az utasítás mindig ugyanazt a címet használja. Az operandus értéke változhat, de a címe nem (fordításkor ismert kell legyen!). • Regiszter címzés (register addressing): Mint a direkt címzés, csak nem memóriát, hanem regisztert címez. 2. előadás
Regiszter-indirekt címzés (register indirect addresing): A címrészen valamelyik regisztert adjuk meg, de a megadott regiszter nem az operandust tartalmazza, hanem azt a memóriacímet, amely az operandust tartalmazza (mutató - pointer). Rövidebb és a cím változtatható. Önmódosító program (Neumann): Ma már kerülendő (cache problémák!), pl. regiszter-indirekt címzéssel kikerülhetjük. 2. előadás
Pl.:, a 100 szóból álló A tömb elemeinek összeadása (egy elem 4 bájt), ~ 5.18. ábra. MOV R1, #0 ; gyűjtsük az eredményt R1-ben, ; kezdetben ez legyen 0. MOV R2, #A ; az A tömb címe MOV R3, #A + 400 ; a tömb utáni első cím C: ADD R1, (R2) ; regiszter-indirekt címzés a tömb ; aktuális elemének elérésére ADD R2, #4 ; R2 tartalmát növeljük 4-gyel CMP R2, R3 ; végeztünk? BLT C ; ugrás a C címkéhez, ha nem . . . ; kész az összegzés 2. előadás
Indexelt címzés (indexed addressing): Egy eltolási érték (offset) és egy (index) regiszter tartalmának összege lesz az operandus címe, 5.19-20. ábra. MOV R1, #0 ; gyűjtsük az eredményt R1-ben, ; kezdetben ez legyen 0. MOV R2, #0 ; az index kezdő értéke MOV R3, #400 ; a tömb mögé mutató index C: ADD R1, A(R2) ; indexelt címzés a tömb ; aktuális elemének elérésére ADD R2, #4 ; R2 tartalmát növeljük 4-gyel CMP R2, R3 ; végeztünk? BLT C ; ugrás a C címkéhez, ha nem . . . ; kész az összegzés 2. előadás
Bázisindex címzés (based-indexed addressing): Egy eltolási érték (offset) és két (egy bázis és egy index) regiszter tartalmának összege lesz az operandus címe. Ha R5 A címét tartalmazza, akkor C: ADD R1, A(R2) helyett a C: ADD R1, (R2+R5) utasítás is írható. • Verem címzés (stack addressing): Az operandus a verem tetején van. Nem kell operandust megadni az utasításban. 2. előadás
Az Intel 8086/8088 társzervezése A memória byte szervezésű. Egy byte 8 bitből áll. word, double word. Byte sorrend: Little Endian (LSBfirst). A negatív számok 2-es komplemens kódban. szegmens, szegmens cím a szegmensen belüli „relatív” cím, logikai cím, virtuális cím, OFFSET, displacement, eltolás, Effective Address (EA) fizikai cím (Address) 2. előadás
Az Intel 8086/8088 üzemmódjai valós (real) védett (protected) szegmens cím szegmens regiszter ↓ szegmens regiszter page tábla elem tartalma * 16 ↓ szegmens kezdőcíme fizikai cím szegmens kezdőcíme + szegmensen belüli cím 2. előadás
Szegmens regiszterek (16 bitesek) A szegmens regiszterek bevezetésének eredeti célja az volt, hogy nagyobb memóriát lehessen elérni. • CS (Code Segment) utasítások címzéséhez • SS (Stack Segment) verem címzéséhez • DS (Data Segment) (automatikus) adat terület címzéséhez • ES (Extra Segment) másodlagos adat terület címzéséhez 2. előadás
Vezérlő regiszterek (16 bitesek) • IP (Instruction Pointer) az éppen végrehajtandó utasítás logikai címét tartalmazza a CS által mutatott szegmensben • SP (Stack Pointer) a stack-be (verembe) utolsónak beírt elem logika címét tartalmazza az SS által mutatott szegmensben • STATUS (SR vagy FLAGS) a processzor állapotát jelző regiszter • BP (Base Pointer) a stack indexelt címzéséhez használatos • SI (Source Index) a kiindulási (forrás) adat terület indexelt címzéséhez használatos • DI (Destination Index) a cél adat terület indexelt címzéséhez használatos 2. előadás
STATUS (FLAGS) bitjei (flag-jei) • O (Overflow) előjeles túlcsordulás • D (Direction) a string műveletek iránya, 0: növekvő, 1: csökkenő • I (Interrupt) 1: megszakítás engedélyezése (enable), 0: tiltása (disable) • T (Trap) 1: „single step”, 0: automatikus üzemmód • S (Sign) az eredmény legmagasabb helyértékű bit-je (előjel bit) • Z (Zero) 1 (igaz), ha az eredmény 0, különben 0 (hamis) • A (Auxiliary Carry) átvitel a 3. és 4. bit között (decimális aritmetika) • P (Parity) az eredmény alsó 8 bitjének paritása • C (Carry) átvitel előjel nélküli műveleteknél 2. előadás
Általános regiszterek (16 illetve 8 bitesek) 2. előadás
Az I8086/88 címzési rendszere Operandus megadás Adat megadás • Kódba épített adat (immediate – közvetlen operandus)MOV AL, 6 ; AL új tartalma 6MOV AX, 0FFH ; AX új tartalma 000FFH • Regiszter címzés:MOV AX, BX Az egyik cím mindig regiszter! A többi adat megadás esetén az automatikus szegmens regiszter: DS 2. előadás
Direkt memória címzés: a címrészen az operandus logikai címe (eltolás, displacement) MOV AX, SZO ; AX új tartalma SZO tartalma MOV AL, KAR ; AL új tartalma KAR tartalma Valahol a DS által mutatott szegmensben: SZO DW 1375H KAR DB 3FH (DS:SZO) illetve (DS:KAR) MOV AX, KAR ; hibás MOV AL, SZO ; hibás MOV AX, WORD PTR KAR ; helyes, de … MOV AL, BYTE PTR SZO ; helyes, de … 2. előadás
Indexelt címzés: a logikai cím: a 8 vagy 16 bites eltolás + SI vagy DI (esetleg BX) tartalma MOV AX, 10H[SI] MOV AX, -10H[SI] MOV AX, [SI] Regiszter-indirekt címzés: eltolási érték nélküli indexelt címzés MOV AX, [BX] MOV AX, [SI] • Bázis relatív (bázisindex) címzés: a logikai cím: eltolás + BX + SI vagy DI tartalma MOV AX, 10H[BX][SI] MOV AX, [BX+SI+10H] 2. előadás
Stack (verem) terület címzés Automatikus szegmens regiszter: SS Megegyezik a bázis relatív címzéssel, csak a BX regiszter helyett a BP szerepel. 2. előadás
Program terület címzés Automatikus szegmens regiszter: CS A végrehajtandóutasítás címe: (CS:IP) Egy utasítás végrehajtásának elején: IP = IP + az utasítás hossza. • IP relatív címzés:IP = IP + a 8 bites előjeles közvetlen operandus • Direkt utasítás címzés: Az operandus annak az utasításnak a címe, ahova a vezérlést átadni kívánjuk. Közeli (NEAR): IP <= a 16 bites operandus Távoli (FAR): (CS:IP) <= a 32 bites operandus. CALL VALAMI ; az eljárás típusától függően ;NEAR vagy FAR 2. előadás
Indirekt utasítás címzés: Bármilyen adat címzési móddal megadott szóban vagy dupla szóban tárolt címre történő vezérlés átadás. Pl.: JMP AX ; ugrás az AX-ben tárolt címre JMP [BX] ; ugrás a (DS:BX) által címzett ; szóban tárolt címre. JMP FAR [BX] ; ugrás a (DS:BX) által ; címzett dupla szóban tárolt címre. 2. előadás
Az utasítások szerkezete Prefixum: utasítás ismétlés, explicit szegmens megadás vagy LOCK MOV AX, CS:S ; S nem a DS, ; hanem a CS regiszterrel címzendő Operációs kód: szimbolikus alakját mnemonic-nak nevezzük Címzési mód byte: hogyan kell az operandust értelmezni Operandus: mivel kell a műveletet elvégezni 2. előadás
Címzési mód byte A legtöbb utasítás kód után szerepel. Szerkezete: Ha a műveleti kód legalacsonyabb helyértékű bit-je 0, akkor byte-os művelet, 1, akkor word-ös (szavas) művelet. 2. előadás
Szimbolikus alakban az operandusok sorrendje, gépi utasítás formájában a gépi utasítás kód mondja meg a regiszter és a memória közti adatátvitel irányát. Pl. az alábbi két utasítás esetén a címzési mód byte megegyezik: MOV AX, 122H[SI+BX] ; hexadecimálisan 8B 80 0122 MOV 122H[SI+BX], AX ; hexadecimálisan 89 80 0122 2. előadás
Az általános regiszterek és SI, DI, SP, BP korlátlanul használható, a többi (a szegmens regiszterek, IP és STATUS) csak speciális utasításokkal. Pl.: MOV DS, ADAT ; hibás! MOV AX, ADAT ; helyes! MOV DS, AX ; helyes! A „többi” regiszter nem lehet aritmetikai utasítás operandusa, sőt, IP és CS csak vezérlés átadó utasításokkal módosítható, közvetlenül nem is olvasható. 2. előadás
; Assembly főprogram, amely adott szöveget ír a képernyőre ; ================================================= KOD SEGMENT PARA PUBLIC CODE; Szegmens kezdet ; KOD: a szegmens neve ; align-type (igazítás típusa): BYTE, WORD, PARA, PAGE ; combine-type: PUBLIC, COMMON, AT kifejezés, STACK ; class: CODE, DATA, (CONSTANT,) STACK, MEMORY ; ajánlott értelemszerűen ASSUME CS:KOD, DS:ADAT, SS:VEREM, ES:NOTHING ; feltételezett szegmens regiszter értékek. ; A beállításról ez az utasítás nem gondoskodik! 2. előadás
KIIR PROC FAR ; A fő eljárás mindig FAR ; FAR: távoli, NEAR: közeli eljárás ; Az operációs rendszer úgy hívja meg a főprogramokat, hogy ; a CS és IP a program végén lévő END utasításban megadott ; címke szegmens és OFFSET címét tartalmazza, SS és SP a ; a STACK kombinációs típusú szegmens végét mutatja, ; a visszatérés szegmens címe DS-ben van, OFFSET-je pedig 0 PUSH DS ; DS-ben van a visszatérési cím ; SEGMENT része XOR AX, AX ; AX0, az OFFSET rész = 0 PUSH AX ; Veremben a (FAR) visszatérési cím MOV AX, ADAT ; AX az ADAT SEGMENT címe MOV DS, AX ; Most már teljesül, amit az ASSUME utasításban írtunk ; Eddig tartott a főprogram előkészületi része 2. előadás
MOV SI, OFFSET SZOVEG ; SISZÖVEG OFFSET címe CLD ; a SZÖVEGet növekvő címek ; szerint kell olvasni CALL KIIRO ; Eljárás hívás RET ; Visszatérés az op. rendszerhez ; a veremből visszaolvasott ; szegmens és OFFSET címre KIIR ENDP ; A KIIR eljárás vége 2. előadás
KIIRO PROC ; NEAR eljárás, ; megadása nem kötelező CIKLUS: LODSB ; ALa következő karakter CMP AL, 0 ; AL =? 0 JE VEGE ; ugrás a VEGE címkéhez, ; ha AL=0 MOV AH, 14 ; BIOS rutin paraméterezése INT 10H ; a 10-es interrupt hívása: ; az AL-ben lévő karaktert kiírja ; a képernyőre JMP CIKLUS ; ugrás a CIKLUS címkéhez, ; a kiírás folytatása VEGE: RET ; Visszatérés a hívó programhoz KIIRO ENDP ; A KIIRO eljárás vége KOD ENDS ; A KOD szegmens vége 2. előadás
ADAT SEGMENT PARA PUBLIC DATA SZOVEG DB Ezt a szöveget kiírja a képernyőre DB 13, 10, 0 ; 13: a kocsi vissza, ; 10: a soremelés kódja, ; 0: a szöveg vége jel ADAT ENDS ; Az ADAT szegmens vége ; ================================================= VEREM SEGMENT PARA STACK DW 100 DUP (?) ; Helyfoglalás 100 db ; inicializálatlan szó számára VEREM ENDS ; A VEREM szegmens vége ; ================================================= END KIIR ; Modul vége, ; a program kezdőcíme: KIIR 2. előadás
Digitális logikai szint Digitális áramkör: két érték – általában 0-1 volt között az egyik (pl. 0, hamis), 2-5 volt között a másik (1, igaz). Más feszültségeket nem engednek meg. Kapu (gate): kétértékű jelek valamilyen függvényét tudja meghatározni.Kapcsolási idő néhány ns (nanoszekundum = 10-9 s) 2. előadás
0 + Vcc + Vcc + Vcc + Vcc + Vcc Vki Bázis NEM (NOT) kapu (3.1-2.ábra) Kollektor 0 Vbe Emitter NEM(NOT)kapu, inverter Tranzisztor Szimbolikus jelölése: Igazság tábla: X A Inverziós gömb erősítő 2. előadás
+ Vcc Vki V1 V2 Igazság tábla: NEM-ÉS (NAND) kapu (3.1-2.ábra) Szimbolikus jelölése A X B 2. előadás
V1 V2 A X B Igazság tábla: + Vcc NEM-VAGY (NOR) kapu (3.1-2.ábra) Vki Szimbolikus jelölése 2. előadás
A X B Igazság tábla: ÉS (AND) kapu (3.2.ábra) Szimbolikus jelölése 2. előadás
A X B Igazság tábla: VAGY (OR) kapu (3.2.ábra) Szimbolikus jelölése 2. előadás
Boole-algebra Olyan algebra, amelynek változói és függvényei csak a 0, 1 értéket veszik fel, a műveletei: • ÉS (konjunkció), • VAGY (diszjunkció), • NEM (negáció). Igazságtábla: olyan táblázat, amely a változók összes lehetséges értéke mellett megadja a függvény vagy kifejezés értékét. 2. előadás
Igazság tábla: Pl. 3 változós többségi függvény (3.3. ábra): értéke 1, ha legalább két argumentuma 1 Boole-algebrai alakja: A fölülvonás a NEM (negáció), az egymás mellé írás az ÉS, a + a VAGY művelet jele. Diszjunktív normálforma. 2. előadás
A B C A B C M A B C Boole-függvény megvalósításának lépései (3.3.ábra): • igazságtábla, • negált értékek, • ÉS kapuk bemenetei, • ÉS kapuk, • VAGY kapu, kimenet. 2. előadás
NOT NAND és NOR előnye: teljesség (3.4. ábra) AND OR 2. előadás
Definíció: Akkor mondjuk, hogy két Boole-függvény ekvivalens, ha az összes lehetséges bemenetre a két függvény azonos kimenetet ad. Két Boole-függvény ekvivalenciája könnyen ellenőrizhető az igazság táblájuk alapján. Pl.: AB + AC és A(B + C) ekvivalens (3.5. ábra). Az első függvény megvalósításához két ÉS és egy VAGY kapura van szükség, a másodikhoz elegendő egy ÉS és egy VAGY kapu. 2. előadás
Néhány azonosság (3.6. ábra) 2. előadás
Disztribúciós szabály: A+BC=A+(BC)=(A+B)(A+C) Jelölje az ÉS műveletet ٨ , a VAGYműveletet ٧ , akkor A ٧ (B ٨ C) = (A ٧ B) ٨ (A ٧ C) 2. előadás