Assembler proqramlaşdırma dili

Giriş-çıxış əmrləri

Giriş-çıxış əmrləri

Hər bir giriş - çıxış qurğusu və hər bir sistem qurğusu giriş-çıxışın ünvan fəzası vasitəsi ilə müraciət oluna bilən bir və ya bir neçə 8, 16 və ya 32 mərtəbəli registrə malikdir. Giriş-çıxışın ünvan fəzası fiziki olaraq əməli yaddaşdan asılı deyil və onun ölçüsü məhdud olub, 216 və ya 65536 qədər giriş- çıxış ünvanından ibarətdir.

Beləliklə, giriş-çıxış portları anlayışını giriş-çıxışın ün­vanlar fəzasında müəyyən ünvanı olan 8, 16 və ya 32 mər­təbəli aparat registri kimi təyin edə bilərik. Kompüter qurğularının idarə olunmasının ən sadələşdirilmiş sxemi aşağıdakı şəkildə verilmişdir.

Şəkildən görundüyü kimi, BIOS səviyyəsi ən aşağı sə­viyyədir.

O, kompüter qurğularından asılı olmayaraq, qurğular ilə birbaşa portlar vasitəsilə işləyir. Qurğuların dəyişdi­rilməsi zamanı, BIOS–un ancaq uyğun funksiyalarında düzəlişlər aparlır ki, onlar portların yeni ünvanlarına və işləmə məntiqinə istiqamətlənə bilsinlər.

Portların nömrəsi və onların mərtəbələri haqqında məlu­matlar qurğunun texniki sənədlərində idarəedici informa­siya formatında göstərilir. İstifadə ediləcək qurğuda yerinə yetriləcək işin sona çatması üçün əməliyyatların və qur­ğunun portlarının proqramlaşdırılması ardıcıllığını bilmək lazımdır. Yəni, faktiki olaraq nəyi və hansı ardıcıllıqda porta ötürməni (ona yazma zamanı) və ya ondan götürməni (oxuma zamanı) müəyyən etmək lazımdır. Bu məqsədlə mikroprosessorun əmrlər sistemindəki cəmi iki əmrdən istifadə etmək kifayətdir. Bunlara giriş-çıxış əmrləri deyilir və onlar xarici qurğularla əlaqə yaradırlar.

1) IN əmri verilənləri portdan qəbulediciyə oxuyur və ümumi yazılışı aşağıdakı kimidir:

IN qəbuledici, port

Bu əmr nömrəsi port operandında göstərilən portdan veriləni (ədədi) qəbulediciyə köçürür. Qəbuledici kimi yalnız AL, AX və ya EAX registrlərindən uyğun olaraq baytı, sözü və ya ikiqat sözü qəbuletmək üçün istifadə etmək olar. Port kimi isə ya bilavasitə operand, ya da DX registri götürülür. Bilavasitə operandan istifadə etdikdə qiymət 255-dən (port 0-dan 255 kimi nömrələnir) böyük ola bilməz. Məsələn:

IN AL, 22       ; 22 nömrəli portdan baytı 
                ; AL registrinə daxil edir
IN  AX, 37h        ; 37h nömrəli portdan  sözü 
                ; AX  registrinə daxil edir
IN  EAX, 211      ; 211 nömrəli portdan  ikiqat sözü  
                ; EAX registrinə daxil edir
IN  AL, DX        ; DX ilə təyin edilən  nömrəli 
                ; portdan baytı AL registrinə
                ; daxil edir
IN  AX, DX        ; DX ilə təyin edilən nömrəli portdan  
                ; sözü AX  registrinə daxil edir 
IN  EAX, DX    ; DX ilə təyin edilən nömrəli portdan
                ; ikiqat sözü AX  registrinə daxil edir.

2) OUT əmrindən verilənləri porta göndərmək üçün istifadə edilir və ümumi yazılışı aşağıdakı kimidir:

OUT port, mənbə

Mənbədən (AL, AX və ya EAX registrindən) veriləni (ədədi) nömrəsi port operandında göstərilən giriş-çıxış portuna köçürür. Nömrə ya bilavasitə operand (bu halda portun nömrəsi 255 böyük deyil), ya da DX registri ola bilər. Məsələn:

OUT   33h, AL     ; AL-dəki  verilən  33h nömrəli 
                  ; porta göndərilir
OUT   12h, AX     ; AX-dəki  verilən  12h nömrəli 
                  ; porta göndərilir
OUT   89h, EAX   ; EAX-dəki  verilən  89h 
                  ; nömrəli porta göndərilir
OUT  DX, AL       ; AL-dəki verilən DX ilə təyin 
                  ; edilən nömrəli porta göndərilir
OUT  DX, AX   ; AX-dəki  verilən DX ilə təyin edilən nömrəli porta göndərilir
OUT DX,EAX     ; EAX-dəki  verilən DX ilə təyin edilən
                  ; nömrəli porta göndərilir

IN və OUT əmrləri ilə mikroprosessor giriş-çıxış – klaviatura, sərt disk qurğuları və müxtəlif kontrolerlər ilə bütün informasiya mübadiləsini təşkil edir. Onlardan birinci növbədə qurğu drayverlərində istifadə edilir. Məsələn, PC-nin dinamikini qoşmaq üçün aşağıdakı əmrləri icra etmək lazımdır:

 … 
IN  AL, 61h      ; 61h nömrəli portdan  sözü 
                 ; AL  registrinə daxil edir
OR  AL, 3        ; 0 –cı və 1 –ci bitlər vahid
                 ; vəziyyətinə gətirilir
OUT 61h, AL   ; AL-dəki  verilən  61h nömrəli
                 ; porta göndərilir
...