logikai utasítások

45
Máté: Architektú rák 6. előadás 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!

Upload: gemma-ware

Post on 02-Jan-2016

44 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Máté: Architektúrák 6. előadás 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!

Máté: Architektúrák 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.

Máté: Architektúrák 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

C …

C …

Máté: Architektúrák 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

C …

C …

Máté: Architektúrák 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 Arithmetical Right

Előjeles egész számok 2 hatványával történő osztására alkalmas. Negatív számok esetén csal!

C …

C …

Máté: Architektúrák 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 Arithmetical Left

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.

C …

Máté: Architektúrák 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

Máté: Architektúrák 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 verembemov cl,4 ; 4 bit-es rotálás

előkészítéseROR al,CL ; az első jegy az alsó 4 biten

; most: al = 21Hcall h_jegy ; az első jegy kiírása

; kiírtuk, hogy 1ROR al,CL ; a 2. jegy az alsó 4 biten

; most újra: al = 12Hcall h_jegy ; a második jegy kiírása

; most kiírtuk, hogy 2, tehát eddig kiírtuk, hogy 12pop cx ; visszamentés a verembőlret ; visszatérés

hexa_bendp ; a hexa_b eljárás vége

Máté: Architektúrák 6. előadás 9

h_jegy proc ; hexadecimális jegy kiírásapush ax ; mentés a verembeAND al,0FH ; a felső 4 bit 0 lesz,

; a többi változatlanadd al,’0’ ; + 0 kódjacmp al,’9’ ; 9 ?jle h_jegy1 ; ugrás h_jegy1 -hez, ha

igenadd al,’A’-’0’-0AH ; A…F hexadecimális

; jegyek kialakításah_jegy1: mov ah,14 ; BIOS hívás:

int 10H ; karakter kiíráspop ax ; visszamentés a verembőlret ; visszatérés

h_jegy endp ; a hexa_b eljárás vége

Máté: Architektúrák 6. előadás 10

Processzor vezérlő utasítások

A processzor állapotát módosít(hat)ják.

A STATUS bitjeinek módosításaFlag CLear SeT CoMplement

C CLC STC CMC

D CLD STD

I CLI STI

Máté: Architektúrá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.

Máté: Architektúrák 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.

Máté: Architektúrák 6. előadás 13

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.

8255ApárhuzamosB/K lapka

Port A

Port B

Port C8

8

8

82

#CS

A0-A1

#WR

#RD

RESET

D0-D7

Máté: Architektúrák 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.

0 32 K 64 K

2 KB EPROM

a 0 címnél

2 KB RAM a 8000H címnél

4 B PIO az FFFCH címnél

Máté: Architektúrák 6. előadás 15

Pl.: 3.56-57. ábra. Teljes cím dekódolás.

0 32 K 64 K

2 KB EPROM

a 0 címnél

2 KB RAM a 8000H címnél

4 B PIO az FFFCH címnél

#CS

EPROM

#CS

RAM#CS

PIO

A15

A0

A11

Máté: Architektúrák 6. előadás 16

Pl.: 3.56-57. ábra. Részleges cím dekódolás.

0 32 K 64 K

2 KB EPROM a 0 címnél

2 KB RAM a 8000H címnél

4 B PIO az FFFCH címnél

#CS

EPROM

#CS

RAM

#CS

PIO

A0

A15

Máté: Architektúrák 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.

Máté: Architektúrák 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

Máté: Architektúrák 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.

Máté: Architektúrák 6. előadás 20

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.

Beírt karakter Megjelenítendő karakter

Billentyűzet puffere Képernyő puffere

Megszakítás engedélyezett

Billentyűzet állapot Képernyő állapot

Van beírt karakterKész a következő karakter

fogadására

Máté: Architektúrák 6. előadás 21

• programozott B/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]); }}

Máté: Architektúrák 6. előadás 22

• megszakítás vezérelt B/Kaz 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 azadatok mozgatását.

Cikluslopás.

10032

41

CPUDMA

címszámláló

eszközirány

Memória

Máté: Architektúrák 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.

Máté: Architektúrák 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.

Máté: Architektúrák 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.

Máté: Architektúrák 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.

Máté: Architektúrák 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.

Máté: Architektúrák 6. előadás 28

Csapda és megszakításCsapda (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.

Máté: Architektúrák 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 . . .

Máté: Architektúrák 6. előadás 30

Megszakítás kezelés (3.42. ábra)

8259AMegszakítás

vezérlő

bere

ndez

ések

CPU

INTINTA#

RD#WR#A0#CS#

D0-D7

IR0IR1IR2IR3IR4IR5IR6IR7

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.

Máté: Architektúrák 6. előadás 31

Megszakítás

Hardver tevékenységek (3.42. ábra): 1. Az eszköz vezérlő 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 32

Szoftver tevékenységek (kiíráskor): 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 az 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 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).

Máté: Architektúrák 6. előadás 34

5.44. ábra IRS: Interrupt Service Routine

0 10 15 20 25 35 40

Felhasználói program

RS232 ISR

Lemez ISR

Felhasználói program

Nyom-tató ISR

Nyom-tató ISR

Nyomtató megszakítás 2-es elsőbbséggel

RS232 megszakítás 5-ös elsőbbséggel

Nyomtató IRS befejeződik

Lemez IRS befejeződik

RS232 IRS befejeződik, lemez megszakítás keletkezik

A lemez 4-es elsőbbségű megszakítási kérelme függőben marad

Nyomtató

Felhasz-náló

Felhasz-náló

Nyomtató

Felhasz-náló

Felhasz-náló Verem

Máté: Architektúrák 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.

Máté: Architektúrák 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.

Máté: Architektúrák 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.

Máté: Architektúrák 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?

Máté: Architektúrák 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

Máté: Architektúrák 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 S0 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

Máté: Architektúrák 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

Máté: Architektúrák 6. előadás 42

Az XCHG utasítás mikroprogram szinten:

Segéd regiszter S; S CX; CX Segéd regiszterolvasá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ásjmp ujra

szabad: . . . ; használható az erőforrás, ; de a szemafor már foglalt

. . .MOV S,0 ; a szemafor szabadra

állítása

Máté: Architektúrák 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!

Máté: Architektúrák 6. előadás 44

FeladatokMi 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 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?