Logikai utastsok Bitenknti logikai mveleteket vgeznek 1 az
Logikai utasítások Bitenkénti logikai műveleteket végeznek. 1 az igaz, 0 a hamis logikai érték. AND TEST OR XOR op 1, op 2 NOT op Máté: Architektúrák ; op 1 & op 2, bitenkénti és ; flag-ek op 1 & op 2 szerint ; op 1 | op 2, bitenkénti vagy ; op 1 ^ op 2 (e. Xclusive OR), ; bitenkénti kizáró vagy ; op ~op, bitenkénti negáció, ; nem módosítja STATUS tartalmát! 6. előadás 1
Bit forgató (Rotate) és léptető (Shift) utasítások Forgatják (Rotate) illetve léptetik (Shift) op tartalmát. A forgatás/léptetés történhet 1 bittel, vagy byte illetve word esetén a CL regiszter alsó 3 illetve 4 bit-jén megadott bittel jobbra (Right) vagy balra (Left). Az utoljára kilépő bit lesz a Carry új tartalma. Máté: Architektúrák 6. előadás 2
A rotálás történhet a Carry-n keresztül, ilyenkor a belépő bit a Carry-ből kapja az értékét: RCR C RCL C Máté: Architektúrák op, 1/CL ; Rotate through Carry Right … op, 1/CL ; Rotate through Carry Left … 6. előadás 3
A rotálás történhet úgy, hogy Carry csak a kilépő bitet fogadja, a belépő bit értékét a kilépő bit szolgáltatja: ROR C ROL C Máté: Architektúrák op, 1/CL ; Rotate Right … op, 1/CL ; Rotate Left … 6. előadás 4
A belépő bit balra léptetéskor mindig 0. Jobbra léptetéskor lehet 0 (logikai léptetés): SHR op, 1/CL ; SHift Right C 0 SHL C … op, 1/CL ; SHift Left … 0 Előjel nélküli egész számok 2 hatványával történő szorzására (SHL) és osztására (SHR) alkalmas. Máté: Architektúrák 6. előadás 5
A belépő bit balra léptetéskor mindig 0. SAL op, 1/CL ; SHift Arithmetical Left SAL ≡ SHL Jobbra léptetéskor lehet op előjele (aritmetikai léptetés): SAR op, 1/CL ; SHift Arithmetical Right C … Előjeles egész számok 2 hatványával történő szorzására (SAL) és osztására (SAR) alkalmas. Máté: Architektúrák 6. előadás 6
hexa proc ; ax kiírása hexadecimálisan ; legyen a példa kedvéért ax = 1234 H xchg ah, al ; ah és al felcserélése ; most ax = 3412 H, al = 12 H call hexa_b ; al (az eredeti ah) kiírása ; kiírtuk, hogy 12 xchg ah, al ; ah és al visszacserélése ; most újra ax = 1234 H, al = 34 H call hexa_b ; al kiírása ; most kiírtuk, hogy 34, tehát eddig kiírtuk, hogy 1234 ret ; visszatérés hexa endp ; a hexa eljárás vége Máté: Architektúrák 6. előadás 7
hexa_b proc ; al kiírása hexadecimálisan ; az első híváskor al = 12 H push cx ; mentés a verembe mov cl, 4 ; 4 bit-es rotálás előkészítése ROR al, CL ; az első jegy az alsó 4 biten ; most al = 21 H call h_jegy ; az első jegy kiírása ; kiírtuk, hogy 1 ROR al, CL ; a 2. jegy az alsó 4 biten ; most újra, al = 12 h call h_jegy ; a második jegy kiírása ; most kiírtuk, hogy 2, tehát eddig kiírtuk, hogy 12 pop cx ; visszamentés a veremből ret ; visszatérés hexa_b endp ; a hexa_b eljárás vége Máté: Architektúrák 6. előadás 8
h_jegy proc push AND add cmp jle add h_jegy 1: mov int pop ret h_jegy endp Máté: Architektúrák ; hexadecimális jegy kiírása ax ; mentés a verembe al, 0 FH ; a felső 4 bit 0 lesz, ; a többi változatlan al, ’ 0’ ; + 0 kódja al, ’ 9’ ; 9? h_jegy 1 ; ugrás h_jegy 1 -hez, ha igen al, ’A’-’ 0’-0 AH ; A…F hexadecimális ; jegyek kialakítása ah, 14 ; BIOS hívás: 10 H ; karakter kiírás ax ; visszamentés a veremből ; visszatérés ; a hexa_b eljárás vége 6. előadás 9
Processzor vezérlő utasítások A processzor állapotát módosít(hat)ják. A STATUS bitjeinek módosítása Flag CLear Se. T Co. Mplement C CLC STC CMC D CLD STD I CLI STI Máté: Architektúrák 6. előadás 10
Processzor vezérlő utasítások NOP ; NO o. Peration, üres utasítás, ; nem végez műveletet. WAIT ; A processzor várakozik, amíg más ; processzortól (pl. lebegőpontos ; segédprocesszortól) kész jelzést nem kap. HLT ; Ha. LT, leállítja a processzort. A ; processzor külső megszakításig ; várakozik. Máté: Architektúrák 6. előadás 11
Input, output, interfész, I/O lapkák UART (Universal Asynchronous Receiver and Transmitter) egy bájtot tud olvasni az adatsínről, és aztán sorosan továbbítja az eszközhöz (vagy fordítva), programmal konfigurálható (belső regiszterének beállításával): Ø 5 -8 bit szélesség, Øsebesség (50 -19. 200 bps), Øparitás ellenőrzés (páros, páratlan, nincs). USART (Universal Synchronous Asynchronous Receiver and Transmitter): szinkron és aszinkron módon is tud működni. Máté: Architektúrák 6. előadás 12
PIO (Parallel Input/Output, 3. 55. ábra) 24 B/K vonal, amellyel TTL kompatibilis eszközökhöz (billentyűzet, kapcsolók, nyomtatók) tud kapcsolódni. Konfigurálható. Leggyakoribb az ábrán látható használat. Aszinkron eszközökhöz „kézfogás” logika. Beviteli/Kiviteli (B/K, Input/Output, I/O) eszközök használata (chip selection): • Valódi B/K eszköz. • Memóriára leképezett B/K (memory-mapped I/O). Pl. : 3. 56 -57. ábra. Teljes és részleges cím dekódolás. Máté: Architektúrák 6. előadás 13
Input, output (I/O) utasítások (I 8086/88) A külvilággal történő információ csere port-okon (kapukon) keresztül zajlik. A kapu egy memória cím, az információ csere erre a címre történő írással, vagy erről a címről való olvasással történik. Egy-egy cím vagy cím csoport egy-egy perifériához kötődik. A központi egység oldaláról a folyamat egységesen az IN (input) és az OUT (output) utasítással történik. Máté: Architektúrák 6. előadás 14
A perifériától függ, hogy a hozzá tartozó port 8 vagy 16 bites. A központi egységnek az AL illetve AX regisztere vesz részt a kommunikációban. A port címzése 8 bites közvetlen adattal vagy a DX regiszterrel történik. IN AL/AX, port ; AL/AX egy byte/word a port-ról OUT port, AL/AX ; port egy byte/word AL/AX-ből Máté: Architektúrák 6. előadás 15
A periféria oldaláról a helyzet nem ilyen egyszerű. Az input információ „csomagokban” érkezik, az output információt „csomagolva” kell küldeni. A csomagolás (vezérlő információ) mondja meg, hogyan kell kezelni a csomagba rejtett információt (adatot). Éppen ezért az operációs rendszerek olyan egyszerűen használható eljárásokat tartalmaznak (BIOS rutinok, stb. ), amelyek elvégzik a ki- és becsomagolás munkáját, és ezáltal lényegesen megkönnyítik a külvilággal való kommunikációt. Máté: Architektúrák 6. előadás 16
Input/output (5. 30 -32. ábra) Az I/O vezérlő regiszterei (5. 30. ábra). Terminál: külön regiszterek az inputra és outputra. • programozott B/K 5. 31. ábra, tevékeny várakozás • megszakítás vezérelt B/K az eszköz megkapja a feladatát, majd ha elkészült, beállítja a „Megszakítás engedélyezett” bitet. • DMA (Direct Memory Access, 5. 32. ábra) ha a tömb átvitele megkezdődhet, akkor a DMA önállóan végzi az eszköz figyelését és az adatok mozgatását. Cikluslopás. Máté: Architektúrák 6. előadás 17
Megszakítás rendszer, interrupt utasítások • Az I/O utasítás lassú a CPU gyors, a CPU várakozni kényszerül • I/O regiszter (port): a port és a központi egység közötti információ átadás gyors, a periféria autonóm módon elvégzi a feladatát. Újabb perifériához fordulás esetén a CPU várakozni kényszerülhet. • Pollozásos technika: a futó program időről időre megkérdezi a periféria állapotát, és csak akkor ad ki újabb I/O utasítást, amikor a periféria már fogadni tudja. A hatékonyság az éppen futó programtól függ. Máté: Architektúrák 6. előadás 18
Megszakítás A (program) megszakítás azt jelenti, hogy az éppen futó program végrehajtása átmenetileg megszakad – a processzor állapota megőrződik, hogy a program egy későbbi időpontban folytatódhassék – és a processzor egy másik program, az úgynevezett megszakítás kezelő végrehajtását kezdi meg. Miután a megszakítás kezelő elvégezte munkáját, gondoskodik a processzor megszakításkori állapotának visszaállításáról, és visszaadja a vezérlést a megszakított programnak. Máté: Architektúrák 6. előadás 19
Pl. : nyomtatás • Nyomtatás pufferbe, később a tényleges nyomtatást vezérlő program indítása. • Nyomtatás előkészítése (a nyomtató megnyitása), HALT. • A továbbiak során a nyomtató megszakítást okoz, ha kész újabb adat nyomtatására. Ilyenkor a HALT utasítást követő címre adódik a vezérlés. A következő karakter előkészítése nyomtatásra, HALT. A bekövetkező megszakítás hatására a megszakító rutin mindig a következő adatot nyomtatja. Ha nincs további nyomtatandó anyag, akkor a nyomtatást vezérlő program lezárja a nyomtatót (nem következik be újabb megszakítás a nyomtató miatt), és befejezi a működését. Máté: Architektúrák 6. előadás 20
A HALT utasítás csak akkor szükséges, ha a nyomtatást kérő program befejezte a munkáját. Ellenkező estben visszakaphatja a vezérlést. Ilyenkor az ő feladata az esetleg szükséges várakozásról gondoskodni a program végén. Bevitel esetén olyankor is várakozni kell, ha még a beolvasás nem történt meg, és a további futáshoz szükség van ezekre az adatokra. Jobb megoldás, ha a HALT utasítás helyett az operációs rendszer fölfüggeszti a program működését, és elindítja egy másik program futását. Ez vezetett a multiprogramozás kialakulásához. Máté: Architektúrák 6. előadás 21
A megszakító rutin megszakítható-e? Elromlik a visszatérési cím, stb. … „Alap” állapot – „megszakítási” állapot, megszakítási állapotban nem lehet újabb megszakítás. Hierarchia: megszakítási állapotban csak magasabb szintű ok eredményezhet megszakítást. Bizonyos utasítások csak a központi egység bizonyos kitüntetett állapotában hajthatók végre, alap állapotban nem. → csapda, szoftver megszakítás. Megoldható az operációs rendszer védelme, a tár védelem stb. A megoldás nem tökéletes: vírus. Máté: Architektúrák 6. előadás 22
Csapda és megszakítás Csapda (trap): A program által előidézett feltétel (pl. túlcsordulás) hatására automatikus eljárás hívás. Csapdakezelő. Megszakítás (interrupt): Olyan automatikus eljárás hívás, amit általában nem a futó program, hanem valamilyen B/K eszköz idéz elő, pl. a program utasítja a lemezegységet, hogy kezdje el az adatátvitelt, és annak végeztével megszakítást küldjön. Megszakításkezelő. A csapda a programmal szinkronizált, a megszakítás nem. Máté: Architektúrák 6. előadás 23
Pl. : Egy sornyi karakter képernyőre írása a terminálon. Előkészítés: Egy rendszerprogram összegyűjti a kiírandó karaktereket egy pufferben, beállít egy globális változót, hogy mutasson a puffer elejére, egy másik globális változóban megadja a karakterek számát. Megnézi, hogy a terminál tud-e adatot fogadni (5. 30. ábra), és ha igen, akkor elindítja az első karakter kiíratását. Ekkor a CPU fölszabadul egy másik program futtatására. A terminál a képernyőre írja a karaktert, és megszakítást kezdeményez. A megszakítás kezelő újabb karakter kiírását kezdeményezi. . . Máté: Architektúrák 6. előadás 24
Megszakítás. Hardver tevékenységek (3. 42. ábra) 1. Az eszköz vezérlője megszakítás jelet tesz a buszra, 2. ha a CPU fogadni tudja a megszakítást, nyugtázza, 3. az eszköz vezérlője az eszköz azonosítószámát (megszakítás-vektor) elküldi a buszon, 4. ezt a CPU átmenetileg tárolja, 5. a CPU a verembe teszi az utasításszámláló aktuális értékét és a PSW-t, 6. a CPU az azonosító indexű megszakítás kezelő címét teszi az utasításszámlálóba és gyakran betölti vagy módosítja PSW-t. Máté: Architektúrák 6. előadás 25
Szoftver tevékenységek: 7. menti a használni kívánt regisztereket, 8. kiolvassa a terminál számát egy eszközregiszterből, 9. beolvassa az állapotkódot, 10. ha B/K hiba történt, itt lehet kezelni, 11. aktualizálja a mutatót és a számlálót, a kimenő pufferbe írja a következő karaktert, 12. visszajelez a eszköz vezérlőnek, hogy készen van, 13. visszaállítja a mentett regisztereket, 14. visszatér a megszakításból, sokszor itt történik a PSW eredeti értékének visszaállítása is. Máté: Architektúrák 6. előadás 26
Átlátszóság: Amikor bekövetkezik egy megszakítás, akkor bizonyos utasítások végrehajtódnak, de amikor ennek vége, a CPU ugyanolyan állapotba kerül, mint amilyenben a megszakítás bekövetkezése előtt volt. Ha sok eszköz van a rendszerben, akkor célszerű, ha egy megszakítás kiszolgálása közben másik megszakítás is történhet, ilyenkor a megszakítások hierarchiába vannak rendezve (5. 44. ábra). Máté: Architektúrák 6. előadás 27
I 8086/88 Az i. megszakítási okhoz tartozó megszakító rutin FAR címe a memória 4*i. címén található (0 i 255). A megszakítási ok sorszámát hardver megszakítás esetén a hardver egység installáláskor adott száma, szoftver megszakítás esetén az operandus rész szolgáltatja. Megszakítási ok jelentkezésekor a STATUS, CS és IP a verembe kerül, az I és a T flag 0 értéket kap (az úgynevezett maszkolható megszakítások tiltása és folyamatos üzemmód beállítása), majd (CS: IP) felveszi a megszakítás kezelő kezdőcímét. Máté: Architektúrák 6. előadás 28
Interrupt utasítások Szoftver megszakítást eredményeznek. INT i ; 0 i 255, ; megszakítás az i. ok szerint. Az INT 3 utasítás kódja csak egy byte (a többi 2 byte), így különösen alkalmas nyomkövető (DEBUG) programokban történő alkalmazásra. Máté: Architektúrák 6. előadás 29
A DEBUG program saját magához irányítja a 3 -as megszakítást. Az ellenőrzendő program megadott pontján (törés pont, break point) lévő utasítást (annak 1. bájtját) átmenetileg az INT 3 utasításra cseréli, és átadhatja a vezérlést az ellenőrzendő programnak. Amikor a program az INT 3 utasításhoz ér, a megszakítás hatására a DEBUG kapja meg a vezérlést. Kiírja a regiszterek tartalmát, és további információt kérhetünk a program állapotáról. Később visszaírja azt a tartalmat, amit INT 3 -ra cserélt, elhelyezi az újabb törés pontra az INT 3 utasítást és visszaadja a vezérlést az ellenőrzendő programnak. Máté: Architektúrák 6. előadás 30
Ezek alapján érthetővé válik a DEBUG program néhány „furcsasága”: • Miért „felejti el” a töréspontot? Ha ugyanis nem felejtené el – azaz nem cserélné vissza a töréspontra elhelyezett utasítást az eredeti utasításra – akkor a program nyomkövetésében nem tudna továbblépni. • Miért nem lehet egy ciklus futásait egyetlen töréspont elhelyezésével figyeltetni, stb? Máté: Architektúrák 6. előadás 31
INTO ; megszakítás csak O=1 (Overflow) ; esetén a 4. ok szerint Visszatérés a megszakító rutinból IRET Máté: Architektúrák ; IP, CS, STATUS feltöltése a ; veremből 6. előadás 32
Szemafor Legyen az S szemafor egy olyan word típusú változó, amely mindegyik program számára elérhető. Jelentse S=0 azt, hogy az erőforrás szabad, és S 0 azt, hogy az erőforrás foglalt. Próbáljuk meg a szemafor kezelését! ; 1. kísérlet ujra: mov cx, S jcxz szabad. . . ; foglalt az erőforrás, várakozás jmp ujra szabad: mov cx, 0 FFFFh mov S, cx ; a program lefoglalta az erőforrást Máté: Architektúrák 6. előadás 33
; 2. kísérlet ujra: MOV XCHG JCXZ. . . szabad: jmp. . . Máté: Architektúrák CX, 0 FFFFH CX, S ; már foglaltat jelez a ; szemafor! szabad ; ellenőrzés S ; korábbi tartalma szerint. ; foglalt az erőforrás, ; várakozás ujra ; szabad volt az erőforrás, ; de a szemafor már foglalt 6. előadás 34
Az XCHG utasítás mikroprogram szinten: Segéd regiszter S; S CX; CX Segéd regiszter olvasás – módosítás – visszaírás ujra: mov LOCK xchg jcxz szabad: . . . jmp. . . MOV Máté: Architektúrák cx, 0 FFFFh cx, S ; S már foglaltat jelez szabad ; ellenőrzés S korábbi ; tartalma szerint ; foglalt az erőforrás, várakozás ujra ; használható az erőforrás, ; de a szemafor már foglalt S, 0 ; a szemafór szabadra állítása 6. előadás 35
Feladatok Hogy működik a TEST utasítás? Mi történik a flag-ekkel NOT utasítás hatására? Milyen operandusai vannak a SAR utasításnak? Milyen szerepe van C-nek a bit forgató utasításoknál? Hogy cserélhető fel BL alsó és felső négy bitje? Mi C tartalma többszörös léptetés esetén? Szorozza be BX-et 32 -vel (tegyük fel, hogy az eredmény elfér BX-ben)! Ossza el az előjeles BX-et 16 -tal! Máté: Architektúrák 6. előadás 36
Feladatok Mi az UART? Milyen áramkörök segítségével tudja megvalósítani a párhuzamos-soros átalakítást? Mit jelent a CS# jelölés egy chip lábán? Mit jelent a PIO rövidítés? Milyen lábai vannak a tanult PIO lapkának? Hogyan használható tanult PIO lapka? Minek a rövidítése a BIOS? Hogy működik a DMA? Mit nevezünk pollozásos technikának? Máté: Architektúrák 6. előadás 37
Feladatok Mi a csapda? Mit nevezünk megszakításnak? Milyen hardver és milyen szoftver tevékenységek tartoznak a megszakításhoz? Mit jelent az átlátszóság megszakítás esetén? Hogy működik a DEBUG program? Mire szolgál a szemafór? Hogy kezelhető PC-n a szemafór? Máté: Architektúrák 6. előadás 38
- Slides: 38