1 / 45

Logikai utasítások

Logikai utasítások Bitenkénti logikai műveleteket végeznek. 1 az igaz, 0 a hamis logikai érték. AND op1,op2 ; op1  op1 & op2, bitenkénti és TEST op1,op2 ; flag-ek op1 & op2 szerint OR op1,op2 ; op1  op1 | op2, bitenkénti vagy

gemma-ware
Download Presentation

Logikai utasítások

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Logikai utasítások Bitenkénti logikai műveleteket végeznek. 1 az igaz, 0 a hamis logikai érték. AND op1,op2 ; op1  op1 & op2, bitenkénti és TEST op1,op2 ; flag-ek op1 & op2 szerint OR op1,op2 ; op1  op1 | op2, bitenkénti vagy XOR op1,op2 ; op1  op1 ^ op2 (eXclusive OR), ; bitenkénti kizáró vagy NOT op ; op  ~op, bitenkénti negáció, ; nem módosítja STATUS tartalmát! 6. előadás

  2. 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. 6. előadás

  3. 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 op,1/CL ; Rotate through Carry Right RCL op,1/CL ; Rotate through Carry Left 6. előadás

  4. 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 op,1/CL ; ROtate Right ROL op,1/CL ; ROtate Left 6. előadás

  5. Logikai léptetés jobbra: A belépő bit 0: SHR op,1/CL ; SHift Right 0 Előjel nélküli egész számok 2 hatványával történő osztására alkalmas. Aritmetikai léptetés jobbra: A belépő bit op előjele: SAR op,1/CL ; Shift ArithmeticalRight Előjeles egész számok 2 hatványával történő osztására alkalmas.Negatív számok esetén csal! 6. előadás

  6. Balra léptetéskor a belépő bit mindig 0: SHL op,1/CL ; SHift Left SAL op,1/CL ; Shift ArithmeticalLeft SAL ≡ SHL 0 Előjel nélküli vagy előjeles egész számok 2 hatványával történő szorzására alkalmas. 6. előadás

  7. hexa proc ; ax kiírása hexadecimálisan ; legyen a példa kedvéért: ax = 1234H xchg ah,al ; ah és al felcserélése ; most: ax = 3412H, al = 12H 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 = 1234H, al = 34H 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 6. előadás

  8. hexa_b proc ; al kiírása hexadecimálisan ; az első híváskor: al = 12H 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 = 21H 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 = 12H 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 6. előadás

  9. h_jegy proc ; hexadecimális jegy kiírása push ax ; mentés a verembe AND al,0FH ; a felső 4 bit 0 lesz, ; a többi változatlan add al,’0’ ; + 0 kódja cmp al,’9’ ;  9 ? jle h_jegy1 ; ugrás h_jegy1 -hez, ha igen add al,’A’-’0’-0AH ; A…F hexadecimális ; jegyek kialakítása h_jegy1: mov ah,14 ; BIOS hívás: int 10H ; karakter kiírás pop ax ; visszamentés a veremből ret ; visszatérés h_jegy endp ; a hexa_b eljárás vége 6. előadás

  10. Processzor vezérlő utasítások A processzor állapotát módosít(hat)ják. 6. előadás

  11. Processzor vezérlő utasítások NOP ; NO oPeration, ü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 ; HaLT,leállítja a processzort. ; A processzor külső megszakításig ; várakozik. 6. előadás

  12. 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. 6. előadás

  13. #CS A0-A1 #WR #RD RESET D0-D7 8255ApárhuzamosB/K lapka 8 Port A Port B Port C 2 8 8 8 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 van beépítve. 6. előadás

  14. 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. ábra. 2 KB EPROM a 0 címnél 2 KB RAM a 8000H címnél 4 B PIO az FFFCH címnél 64 K 32 K 0 6. előadás

  15. 2 KB EPROM a 0 címnél 2 KB RAM a 8000H címnél 4 B PIO az FFFCH címnél 64 K 32 K 0 Pl.: 3.56-57. ábra. Teljes cím dekódolás. A0 A11 A15 #CS RAM #CS EPROM #CS PIO 6. előadás

  16. 2 KB EPROM a 0 címnél 2 KB RAM a 8000H címnél 4 B PIO az FFFCH címnél 64 K 32 K 0 Pl.: 3.56-57. ábra. Részleges cím dekódolás. A0 A15 #CS PIO #CS RAM #CS EPROM 6. előadás

  17. Input, output (I/O) utasítások (I8086/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. 6. előadás

  18. 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 6. előadás

  19. 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, hogy 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 – Basic Input/Output System – 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. 6. előadás

  20. Kész a következő karakter fogadására Van beírt karakter Billentyűzet állapot Képernyő állapot Megszakítás engedélyezett Beírt karakter Megjelenítendő karakter Billentyűzet puffere Képernyő puffere 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. 6. előadás

  21. programozottB/K (5.31. ábra) tevékeny várakozás (pollozásos technika): public static void output_buffer(int buf[], int count) { // count számú bájt kiírása buf-ból az eszközre unsigned byte status; int i, ready; for(i=0; i < count; i++) { do { status = in(display_status_reg); // az állapot lekérdezése ready = (status >> 7) & 0x01; // a kész bit elkülönítése } while(ready == 0); out(display_buffer_reg, buf[i]); } } 6. előadás

  22. DMA Memória címszámlálóeszközirány CPU • megszakítás vezéreltB/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) a DMA önállóan végzi az eszköz figyelését és az adatok mozgatását. Cikluslopás. 6. előadás

  23. 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 (~tevékeny várakozás):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. 6. előadás

  24. 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. 6. előadás

  25. 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. 6. előadás

  26. 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. 6. előadás

  27. 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. 6. előadás

  28. 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. Csapda kezelő. 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ás kezelő. A csapda a programmal szinkronizált, a megszakítás nem. 6. előadás

  29. 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 . . . 6. előadás

  30. IR0IR1IR2IR3IR4IR5IR6IR7 INTINTA# RD#WR#A0# CS# D0-D7 8259A Megszakítás vezérlő CPU berendezések Megszakítás kezelés (3.42. ábra) IRi, INT , ha CPU tudja fogadni, akkor INTA#,i D0-D7, a CPU megszakításvektor táblázat i –edik eleméből tudja a megszakítást kiszolgáló eljárás kezdőcímét, megszakítás … Nyolcnál több eszköz kiszolgálásához több megszakítás vezérlő kapcsolható össze. 6. előadás

  31. Megszakítás Hardver tevékenységek (3.42. ábra): • Az eszköz vezérlő megszakítás jelet tesz a buszra, • ha a CPU fogadni tudja a megszakítást, nyugtázza, • az eszköz vezérlője az eszköz azonosítószámát (megszakítás-vektor) elküldi a buszon, • ezt a CPU átmenetileg tárolja, • a CPU a verembe teszi az utasításszámláló aktuális értékét és a PSW-t, • 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. 6. előadás

  32. Szoftver tevékenységek (kiíráskor): • menti a használni kívánt regisztereket, • kiolvassa a terminál számát egy eszközregiszterből, • beolvassa az állapotkódot, • ha B/K hiba történt, itt lehet kezelni, • aktualizálja a mutatót és a számlálót, a kimenő pufferbe írja a következő karaktert, • visszajelez az eszköz vezérlőnek, hogy készen van, • visszaállítja a mentett regisztereket, • visszatér a megszakításból, sokszor itt történik a PSW eredeti értékének visszaállítása is. 6. előadás

  33. Á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). 6. előadás

  34. IRS: Interrupt Service Routine A lemez 4-es elsőbbségű megszakítási kérelme függőben marad RS232 IRS befejeződik, lemez megszakítás keletkezik RS232 megszakítás 5-ös elsőbbséggel 5.44. ábra Lemez IRS befejeződik Nyomtató megszakítás 2-es elsőbbséggel Nyomtató IRS befejeződik 0 10 15 20 25 35 40 Nyom-tató ISR Nyom-tató ISR Felhasználói program Lemez ISR Felhasználói program RS232 ISR Nyomtató Nyomtató Felhasz-náló Felhasz-náló Felhasz-náló Felhasz-náló Verem 6. előadás

  35. I8086/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. 6. előadás

  36. 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. 6. előadás

  37. 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. 6. előadás

  38. 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? 6. előadás

  39. INTO ;megszakítás csak O=1 (Overflow) ; esetén a 4. ok szerint Visszatérés a megszakító rutinból IRET ; IP, CS, STATUS feltöltése a ; veremből 6. előadás

  40. 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,0FFFFh mov S,cx ;a program lefoglalta az erőforrást 6. előadás

  41. ; 2. kísérlet ujra: MOV CX,0FFFFH XCHG CX,S ;már foglaltat jelez a ; szemafor! JCXZ szabad ;ellenőrzés S korábbi tartalma ;szerint. . . . ; foglalt az erőforrás, ; várakozás jmp ujra szabad: . . . ; szabad volt az erőforrás, ;de a szemafor már foglalt 6. előadás

  42. 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 cx,0FFFFh LOCK xchg cx,S ; S már foglaltat jelez jcxz szabad ; ellenőrzés S korábbi ; tartalma szerint . . . ; foglalt, várakozás jmp ujra szabad: . . . ; használható az erőforrás, ;de a szemafor már foglalt . . . MOV S,0 ; a szemafor szabadra állítása 6. előadás

  43. 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! 6. előadás

  44. 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? 6. előadás

  45. 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 szemafor? Hogy kezelhető PC-n a szemafor? 6. előadás

More Related