Grupul instruc?iunilor de intrare/iessire. Instruc?iuni pentru
controlul intreruperilor. Instruc?iuni pentru sincronizare externa
Scopul lucrarii
Lucrarea prezinta succint grupul instruc?iunilor de intrare/iessire,
instruc?iunile pentru controlul intreruperilor ssi instruc?iunile pentru
sincronizare externa specifice microprocesoarelor I8086/I8088. Dupa o
scurta prezentare a sintaxei acestor instruc?iuni, urmeaza o serie de
exemple care sa eviden?ieze modul de utilizare al acestora.
Chestiuni teoretice
1. Instruc?iuni de intrare/iessire (I/O)
Accesul la interfetele corespunzatoare echipamentelor periferice se
realizeaza prin intermediul unor instructiuni speciale. Fiecare interfata
are asociate un numar de coduri specifice numite porturi. Atribuirea
codurilor pentru fiecare interfata se face la proiectarea sistemului de
calcul. Comunicatia intre microprocesor ssi mediul exterior reprezentat de
interfetele de I/O se face prin executia unor instructiuni care adreseaza
aceste porturi. Un port este o valoare intreaga reprezentata pe 8 sau 16
biti. Citirea unor date sau informatii de stare se face prin intermediul
unor instructiuni de forma:
a) IN AL (AX), PORT ; Input byte or word
b) IN AL (AX), DX
Forma a) poate fi utilizata numai daca portul PORT de intrare are
un cod mai mic decat 256 (PORT ? {0, 1, ..., 255} ) ssi este specificat
direct printr-un octet in cadrul instructiunii. Efectul acestei instructiuni
consta in incarcarea valorii citite din PORT-ul specificat in registrul AL
(AX).
Exemplu: in al, 14 ; Citesste octetul din portul cu numarul 14
in ax, 5 ; Citesste cuvantul din portul cu numarul 5
Efectul executiei unei instructiuni de forma b) consta in incarcarea
valorii citite de la portul adresat indirect prin continutul registrului DX,
in registrul AL (AX).
Exemplu:
mov dx, 14 ;
in al, dx ; Citesste octetul din portul cu numarul 14
mov dx, 5 ;
in ax, dx ; Citesste cuvantul din portul cu numarul 5
Observatii:
1. Numai primele 256 porturi pot fi specificate direct in instructiune, in
timp ce oricare din cele 2**16 porturi pot fi specificate indirect prin
registrul DX.
2. Avantajul specificarii directe a portului consta in aceea ca nu mai este
necesara executarea unei instructiuni suplimentare de incarcare prealabila
a numarului portului in registrul DX.
3. Avantajul specificarii indirecte a portului consta in aceea ca se pot
adresa (prin bucle) porturi cu adrese consecutive.
Transmiterea unor date sau a unor comenzi se face prin
intermediul unor instructiuni de forma:
a) OUT PORT, AL (AX) ; Output byte or word
b) OUT DX, AL (AX)
Efectul acestor instructiuni consta in:
a) Scrierea continutului registrului AL (AX) in portul de adresa
(cod) PORT specificat in instructiune (PORT ? {0, 1, ..., 255} ).
b) Scrierea continutului registrului AL (AX) in portul adresat indirect
prin continutul registrului DX.
Exemple: out 49, al ; Se inscrie octetul din AL in portul 49
out 15, ax ; Se inscrie cuvantul din AX in portul 15
Echivalentul acestor instructiuni, utilizand insa registrul DX este
urmatorul:
mov dx, 49 ;
out dx, al ; Se inscrie octetul din AL in portul 49
mov dx, 15 ;
out dx, ax ; Se inscrie cuvantul din AX in portul 15
Observatie: Comentariile de la instructiunea IN sunt valabile ssi pentru
instructiunea OUT.
2. Instruc?iuni pentr
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.