megszakítási rendszer
Megszakítás - A végrehajtás felfüggesztése egy programot és az irányítás átadása másik esetén bizonyos események önhibájukon kívül. Továbbra is visszatér a megszakított program irányítása, anélkül, hogy elveszítené rabotosposodnosti azt.
Munkavégzés a megszakítási rendszer tekinthető két szempontból:
Munkavégzés a megszakításvektorokat;
Megjegyzés: Ismét hangsúlyozza, hogy elsősorban a valós módban. Próbálok „próbálja meg” minden más is beláthatatlan következményekkel.
Megszakítás leíró táblázat Védett üzemmód csak a zéró gyűrű védelmet, akkor létrehozni vagy módosítani, ha ezt a kapcsolót védett módban magad!
Ha működő V86 lehet változtatni a képet a megszakítás asztal, de a következmények határozzák meg képességeit a virtuális monitor!
Munkavégzés a megszakításvektorokat.
Annak szükségessége, hogy működjön együtt a megszakítás asztal előfordulhat a következő esetekben:
Mint egy megszakítás, akkor hívja az egyik rutin. Bár az alprogram hívás megszakítások igényel CPU időt, ez a megközelítés akkor indokolt, ha az szükséges, hogy megtörje az elvet hierarchia szoftver egy modulon belüli, illetve ha az eljárást sokan használják a programokat (akkor hagyja a tartózkodási befejezése után a rendszer program).
A második ok az írás a megszakítás lehet a használata egyetlen hardveres megszakítás. Ezt a megszakítást nevezik automatikusan, ha bizonyos feltételek.
Normális esetben a BIOS az használatlan megszakításvektorokat úgy, hogy pont egy eljárást, amely semmit sem (ez tartalmazza az egyik szolgáltató IRET). Írhatsz egy eljárást, és módosítják a megszakítási vektort, hogy pont azt. Akkor az eljárást fogják elvégezni, amikor a hardveres megszakítás történik.
Lehet cserélni a meglévő megszakítás saját. Az egyik ilyen megszakítás megszakítási napszak, ami automatikusan meghívódik 18,2 másodpercenként. Általában ez a megszakítás csak frissíti az órát, de akkor tudja használni, hogy szinkronizálja események a programon belül. Más lehetőségek - írja a feldolgozási eljárás Ctrl-szünet, ha a program kell végezni néhány konkrét intézkedések befejezése előtt.
Végül, érdemes írni a megszakítás, amely kiegészíti az egyik operációs rendszer eljárásokat. Ebben az esetben, miután elvégezte a szükséges intézkedéseket meg kell átvinni a vezérlést az eredeti rutin preravany (a „hosszú” feltétel nélküli ugrást vagy kiegészítő interrupt). Ez a technika akkor lehet hasznos, ha írásban TSR kapó kontroll fogadásakor adott parancsot a billentyűzeten.
Megszakításvektorok táblázatából foglal 1Kbayt memória tartományban 00000h - 00400h. Minden vektor rendelt négy bájt az asztalra, és rendelt egy számot 00h-FFh. Abban inicializálóvektorból rendszer konfigurálva rutinok található ROM BIOS és a DOS.
PUSH DS; DS park
MOV DX, OFFSET ROUT; eltolt DX eljárásokban
MOV AX, SEG ROUT; szegmens eljárások
MOV DS, AX, tegye a DS
MOV AH, 25H; vektor beállítási funkció
MOV AL, 60H; vektor száma
INT 21H; változás megszakítás
POP DS; DS helyreállítása
Az adatkezelő a HDD-AT, XT286, PS50 +
Integrált áramkör 8259 három egyetlen bájtos regiszter vezérlő vonalak nyolc hardver megszakítások. megszakítás kérés regiszter (IRR) beállítja a megfelelő bit, ha a megszakítás kérés vonal jeleket. Ezután a chip automatikusan ellenőrzi, hogy ha egy másik megszakítás feldolgozása folyamatban van. Így kéri az információkat szolgáltató nyilvántartást (ISR). További lánc felelős az elsődleges rendszer. Végül, mielőtt megszakítja a hívást, és ellenőrizte a megszakítás maszk regiszter (IMR), hagyjuk tudni, hogy abban a pillanatban megszakad ezen a szinten.
Mielőtt használatba venné a vezérlőt kell inicializálni. Inicializálása végezzük terhelésvezérléséről szavak (legfeljebb 4 bájt). Miután inicializálás, a vezérlő belép egy működési üzemmódban.
Amikor Ajánlott i8085 megszakítás vezérlő ő rendszerben voltak hibák, így a tervezés a vezérlő i8086 (8259A chip), amennyiben a lehetőségét annak működését és felépített rendszerek alapján i8085. A beállítás akkor tekinthető csak i8086 rendszereket.
Port 20h - ellenőrző szó ICW1 inicializálás:
Bit 0 1 inicializálása négy szó (word ICW4 meghatározza jellemzői kapcsolata master és a slave vezérlők);
bites 1 1 rendszer egyetlen vezérlő;
2. bit 0 vektort 8 bájtos,
1 vektort 4 byte;
bit 3 0 rögzítés megszakítás "elöl" (PC és AT),
1 rögzítés megszakítás "a" (a PS / 2);
Bit 4 1 - jel ICW1;
7..5 bitek nulla (az i8086).
Port 21h - ellenőrző szó ICW2 inicializálás:
2..0 bitek nulla (az i8086);
Bit 7..3 túlnyomó része megszakításvektorok szám (i8086).
Port 21h - ellenőrző szó ICW3 vezető:
Bit 7..0 1 jelölt vonalak, amelyek össze vannak kötve a slave vezérlők;
Port 21h - ellenőrző szó ICW3 slave:
Bit 2..0 száma vonal fogadó vezérlő, amely össze van kötve a vezérlő,
7..3 bit nulla;
Port 21h - ellenőrző szó ICW4 inicializálás
1 bit 0 (az i8086);
bit 1 0 megszakítja a parancs befejeztével
1 automatikus meghatározását a végén a megszakítás;
3..2 pufferelés nélküli bit:
0 vagy 1 pufferelés nem használjuk,
2 alárendelt pufferelés módban,
3 vezető pufferelés mód;
4. bit 0 szekvenciálisan
1 speciális átfogó beágyazott mód.
7..5 bitek értéke nulla.
Megjegyzés: Az inicializálási ellenőrző szavak töltik posledovalelno után ICW1 átvitel.
Controller Operations Management.
az üzemirányítási parancsot lehet küldeni a vezérlő után az inicializálás bármikor.
Port 21h - OCW1 megszakítás maszk regiszter (IMR)
7..0 0 megszakítás kiszolgáló bit,
1 megszakítás maszkolás;
Port 20h - OCW2 megszakítja regisztrációhoz parancsok (ICR)
2..0 bitek határozzák meg a bitek száma a jelenlegi szolgáltatás-nyilvántartás (ISR),
4..3 bitek nulla (meghatározva OCW2),
Bit május 1 befejezését megszakítás;
6. bit bit 1 Tisztítás az említett ISR;
Bit 7 jelentése 1 ciklikus eltolási prioritások.
Port 20h - OCW3 szó üzemirányítási
Bit 1..0 terül olvasás:
0 vagy 1 olvasni ott,
1 megjelöléssel bit 2 forma a szó-állapot (benne a legnagyobb számú kérelem érkezett be);
Bit 4..3 aláírására 01 OCW3;
Bit 6..5 speciális maszkoló:
0 vagy 1 hiányzik,
3 készlet (a prioritások illeszkedjenek kérelmek);
7. bit nulla.
Disable / enable kiválasztott hardver megszakítások.
Program asemblere letilthatja hardver megszakítások. Ez maszkos megszakítás; más hardver megszakítások során előforduló hiba történt (például nullával való osztást) nem lehet maszkolni.
Ennek két oka van a tiltás hardver megszakításokat.
Az első esetben minden megszakítások úgy, hogy egy kritikus része a kód már végre teljesen, mielőtt a gép fog néhány más intézkedés. Például szakítsa megtiltják a változó hardver megszakítási vektort, elkerülve megszakításvektorok változik, ha a félúton.
A második esetben, maszkos csak bizonyos hardver megszakítások. Ez úgy történik, amikor néhány sajátos megszakításra tud reagálni a kritikus műveletekkel az idők. Például, nem lehet pontosan kiszámítani az idő egy I / O eljárással kapjuk meg kell szakítani egy hosszabb megszakítás a lemez.
Performing Megszakítás függ a megszakítás flag (9. bit) a lobogó nyilvántartásban. Ha ez a bit 0, akkor a megszakítások engedélyezve vannak, ami lehetővé teszi, hogy a maszkot. Ha értéke 1, az összes hardver megszakítások engedélyezett. Ha le szeretné tiltani a megszakításokat, amelyben a jelző 1, a CLI utasítást. Ha törölni ezt a zászlót, és megszakítja helyreállítás - STI utasítást. Kerülje letiltása megszakítások hosszú ideig. napszak megszakítás történik 18.2 másodpercenként, és ha ez a megszakítás volt több, mint egy kérés, amikor hardver megszakítások már betiltották, a felesleges kérelmek elutasításra kerül isistemnoe idő fogja meghatározni helytelenül.
A készülék automatikusan kikapcsolja a hardver megszakítja a hívást szoftver megszakítások és automatikusan megoldja őket, amikor visszatér. Amikor írsz a szoftver megszakítások, meg lehet kezdeni a programot STI utasítások, ha megakadályozza a hardver megszakítások. Azonban, ha az utasítás a CLI nem lehet az STI, akkor megáll a gép, mint a billentyűzet beviteli be kell fagyasztani.
A következő példa letiltja lemez megszakítás. Ne felejtsük el, hogy törölje a nyilvántartásból végén a program, vagy a lemez tevékenység nem engedélyezett befejezése után a program.
; --- maszkolás 6. bit megszakítás maszk regiszter
MOV AL, 01000000B; kitakarható 6. bit
OUT 21H, AL, küldjön egy megszakítási maszk regiszter
OUT 21H, AL, törölje a IMR végén a program
Végén a kódot minden hardver megszakítások van hozzá, a következő két sornyi kód:
Ha nincs hardveres megszakítja végei ezeket a sorokat, a chip 8259 törli nyilvántartások szolgáltatási információt annak érdekében, hogy szakítsa meg a kezelést hagyjuk alacsonyabb, mint feldolgozni. Ezek hiányában a vonalak könnyen vezethet összeomlott a program, hiszen a megszakítás a billentyűzet valószínűleg be kell fagyasztani, vagy akár a Ctrl-Alt-Del használhatatlan lesz. Ez az adalékanyag nem szükséges a megszakításvektorokat, amelyek kiterjesztése a meglévő megszakítás.