Assembler proqramlaşdırma dili

Kəsilmələr və onların emalı

Kəsilmələr və onların emalı

Kəsilmələr - əsasən aparat və proqram vasitələri tərəfindən çağırılan planlaşdırılmış və ya planlaşdırılmayan əməliyyatların icrası üçün hesablama prosesinin müvəqqəti dayandırılması prosesidir. Kəsilmə xarici qurğular, mikroprosessorun özü və ya xüsusi kəsilmə əmrləri tərəfindən baş verə bilər. Kəsilmələr kompüterin yaddaşına yazılmış kəsilməni emal edən hazır prosedurlar tərəfindən emal olunur. Ümumiyyətlə, 256 –ya qədər kəsilmə prosedurları vardır. Kəsilmə prosedurlarının bir hissəsi BIOS-un, bir hissəsi isə DOS-un yüklənməsi zamanı əməli yaddaşa yüklənərək kəsilmə vektorları cədvəlini təşkil edirlər. Kəsilmələr aparat və proqram kəsilmələrinə bölünürlər. Aparat kəsilmələri kompüterin aparat vasitələri tərəfindən yaranan siqnallara əsaslanır və apart vasitəsi ilə idarə olunur. Məsələn, belə siqnallar klaviaturada BREAK düyməsinin basılmasından, taymerin mikrosxemindən, çap qurğularından və digər quğulardan gələ bilər. Vaxta görə bu kəsilmələrin baş verməsi asinxrondur (təsadüfi vaxt anında baş verə bilər).

Proqram kəsilmələri aparat kəsilmələrindən fərqli olaraq proqramçılar tərəfindən təşkil olunur və onların çağırılması proqramda göstərilməlidir. Bu kəsilmələr sinxron kəilmələr (proqramın müəyyən nöqtəsində baş verən və səbəbi proqramın özündə olan kəsilmə) adlanır.

Kəsilməni emal edən proqramlara, məsələn, verilənlərin klaviaturadan daxil edilməsi, displeyin ekranına və printerə çıxarması, faylların emalı və sairə kimi əməliyyatları yerinə yetirən adi prosedur kimi baxmaq olar.

Kəsilməni emal edən proqramların başlanğıc ünvanları CS və IP registrlərinə yüklənir. Proqram kəsilmələri də, mikroprosessor tərəfindən aparat kəsilmələrinə analoji olaraq emal olunur.

Proqram kəsilmələri bir-biri tərəfindən çağırıla bilər. Proqram kəsilmələrinin icrası zamanı aparat kəsilməsi idarəni zəbt edə bilər.

Kəsilmə proqramının ünvanı vektor adlanır. Hər bir vektorun uzunluğu 4 bayt olub, birinci sözün məzmunu IP registrinin qiyməti, ikinci sözün məzmunu isə CS registrinin qiyməti kimi təyin olunur. Kəsilmə vektorları əməli yaddaşın kiçik ünvanında saxlanılır. Bunun üçün yaddaşın birinci 1024 baytlıq sahəsi ayrılır. Yəni, mümkün 256 vektorlardan istifadə etmək olar. Bütün bunlar birlikdə kəsilmə vektorları (deskreptorlar) cədvəli (KDC) adlanır. KDC əməliyyat sistemi yükləndiyi zaman əməli yaddaşa yüklənir. Aparat kəsilmələrini idarə etmək üçün proqramlaşdırılan kəsilmə kontrolleri adlanan xüsusi mikrosxemdən də istifadə olunur. İstənilən vaxt anında müxtəlif qurğulardan bir neçə kəsilmə sorğuları daxil ola bilər. Bu cür vəziyyətləri heç bir münaqişə vəziyyəti yaratmadan həll etmək üçün kontrollerin təkibinə prioritetlər sxemi daxil edilmişdir ki, bunun əsasında da qurğular tərəfindən yaranan kəsilmələri emal etmək üçün növbə yaradılır.

Maskalanmış və maskalanmamış aparat kəsilmələri mövcuddur. Maskalanmış kəsilmələri qadağan etmək mümkündür. Bu IF kəsilmə bayrağının qiymətindən asılıdır. Əgər IF=0 olarsa, onda maskanın icazə verdiyi bütün kəsilmələrə icazə verilir. Əgər IF=1 olarsa, onda bütün aparat kəsilmələrinin emalı qadağan olunur. Başqa sözlə onlar emal olunmur. IF bayrağını vahid vəziyyətinə gətirmək üçün STI əmrindən, sıfır vəziyyətinə gətirmək üçün isə CLI əmrindən istifadə olunur.

Maskalanmamış aparat kəsilməsi baş verdikdə mikroprosessordan ona cəld reaksiya verilməsi tələb olunur: məsələn, yaddaşda səhv baş verdikdə, gərginlik aşağı düşdükdə və s. Əgər maskalanmamış aparat kəsilməsi baş verərsə, onda o ən böyük prioritet alır və prosessor onu birinci növbədə emal edir.

Proqram kəsilmələrindən daha geniş istifadə olunur. Onlara baza giriş – çıxış sisteminin (BIOS) kəsilmələri və əməliyyat sisteminin (DOS) kəsilmələri aiddir. BIOS kəsilmələri kompüterin aparat hissələrinə yaxın olduğundan bəzi hallarda (məsələn, onların köməyi ilə fayl əməliyyatlarının və ya klaviatura ilə işləmə əməliyyatlarında) onlardan proqramda istifadə edildikdə, proqram mürəkkəbləşə bilər. Ancaq elə əməliyyatlar da (məsələn, müxtəlif qrafiki rejimlərdə displeylə işin təşkili) var ki, onları BIOS kəsilmələrindən istifadə etmədən təkcə DOS kəsilmələrinin köməyi ilə yerinə yetirmək mümkün deyil.

Kəsilmənin emalı proqramının çağırılması zamanı prosessor öz işini dayandıraraq, kəsilmənin emalı proqramını yerinə yetirir və sonra idarəni kəsilmənin baş verdiyi nöqtəyə qaytarır. Kəsilmə proqramının çağrılması INT (INTerrupt-dayandırmaq) əmrinin köməyi ilə həyata keçirilir və əmrdə çağrılan kəsilmənin nömrəsi (kəsilmənin_tipi) göstərilir:

INT kəsilmə_tipi 
INT3 
INTO 

Hər bir kəsilmə prosedurası İRET əmri ilə qurtarır. Kəsilməni idarə edən prosedurun çağrılması zamanı MP icra olunan proqramın işini dayandırır və idarəni kəsilmə proseduruna ötürür. Kəsilmə proseduru işini qurtardıqdan sonra yəni, idarə İRET əmrinə çatdıqda o, idarəni kəsilmə əmrindən sonra gələn əmrə ötürür.

Real və mühafizə iş rejimlərində mikroprosessor kəsilmənin emalını prinsipcə müxtəlif metodlarla aparır. Real iş rejimlərində kəsilmələrin emalına baxaq. Aydındır ki, istənilən proqramı icra etmək üçün proqramın başlanğıc ünvanını CS və IP registrlərinə yükləmək lazımdır. Bunun üçün də kəsilmə baş verdikdə mikroprosessor aşağıdakı əməliyyatları aparır:

1) FLAGS bayraqlar registrinin məzmununu stekdə yerləşdirir;

2) Addım-addım icranı dayandırımaq üçün TF (trassirovka) və İF (kəsilmə) bayraqlarını sıfırlaşdırır və maskalanmamış kəsilmələrin emalı inkar edilir.

3) CS reqistrinin məzmunu stekdə yerləşdirir.

4) Kəsilmə vektorunun ünvanını hesablayır. Hər bir kəsilmə vektorunun uzunluğu 4 bayt və bütün vektorlar kəsilmə vektorları cədvəlində bir-birinin ardınca yerləşdiyindən kəsilmə vektorunun ünvanı = kəsilmə tipi*4 kimi hesablanır;

5) Kəsilmə vektorunun ikinci sözünü CS registrinə yükləyir;

6) IP registrinnin qiymətini stekdə yerləşdirir;

7) Kəsilmə vektorunun birinci sözünü IP registrinə yükləyir.

Bütün bunlar kəsilmənin emalından sonra bu üç regis-trin məzmununu bərpa etməyə, əsas proqramda kəsilmənin baş verdiyi nöqtəyə qayıtmağa imkan verir. Göstərilən registrlərin məzmununu stekdə saxladıqdan sonra mikroprosessor bilavasitə kəsilmənin emalına başlayır. Bunun üçün CS və IP registrlərinə kəsilmənin emalı proqramının ünvanı yüklənir və beləliklə idarə ona ötürülür.

Bütün kəsilmənin emalı proqramları IRET əmri ilə qurtarır. Bu əmr CS, IP və bayraqlar registrlərinin köhnə qiymətini stekdən bərpa edərək kəsilmənin baş verdiyi yerdən əsas proqramın davam etməsini təmin edir.

Qeyd edək ki, 256 kəsilmə vektorunun 32 vektoru təsadüfi və müstəsna hallar üçün nəzərdə tutulmuşdur. Bu vəziyyətlərdən ikisi İNT3 və İNTO əmrləri ilə icra olunur.

İNT3 əmri idarəni kəsilmə vektoru ilə təyin edilən üçüncü prosedura ötürür. Bu prosedur proqramların sazlanması zamanı nəzarət nöqtələrini təyin etməyə imkan verir. Bu kəsilmə vasitəsi ilə MP kəsilmə nöqtəsinə çatdıqda işini dayadırır və proqramçıya lazım olan əməliyyatları aparmağa imkan verir.

İNTO əmri idarəni kəsilmə vektoru ilə təyin edilən dördüncü prosedura ötürür. Bu prosedur OF=1 olduqda çağrılır yəni, daşmaya nəzarət edir.

Qeyd edək ki, hər bir kəsilməninin bir neçə funksiyaları ola bilər.