Spiegare come è possibile utilizzare int 21h per l'input output nel microprocessore 8086?
Ecco un esempio di come è possibile utilizzare l'interrupt INT 21h per leggere un carattere dalla tastiera:
1. Il programma carica il registro AH con il valore 1 per indicare che vuole leggere un carattere dalla tastiera.
2. Il programma emette un interrupt INT 21h.
3. Il microprocessore passa al codice del gestore I/O MS-DOS.
4. Il codice del gestore I/O controlla se è disponibile un carattere nel buffer della tastiera.
5. Se è disponibile un carattere, il codice del gestore I/O legge il carattere dal buffer e lo memorizza nel registro AL.
6. Se non è disponibile alcun carattere, il codice del gestore I/O imposta il Carry Flag (CF) su 1 per indicare questa condizione.
7. Il programma controlla il Carry Flag per determinare se un carattere è stato letto con successo.
8. Se il Carry Flag è 0, il programma recupera il carattere dal registro AL.
Ecco il codice assembly per questo esempio:
```
movimento ah, 1; AH =1 per leggere un carattere dalla tastiera
ore 21 intere; Interrompere 21h per eseguire l'operazione I/O
JC Nochar; Salta se è impostato il flag di trasporto (nessun carattere disponibile)
mov ch, al; Recupera il carattere dal registro AL
```
Questo esempio può essere modificato per eseguire altre operazioni di I/O, come scrivere un carattere sullo schermo, leggere un file o scrivere su un file. Ogni operazione I/O è identificata da un codice funzione univoco che viene caricato nel registro AH prima di emettere l'interrupt INT 21h.