Funzioni utili
..Una lista completa degli interrupt con le loro funzioni è indispensabile.La più nota sicuramente è Ralf Brown's Interrupt list. Tuttavia ci sono dei funzioni che, anche nei virus più complessi, restano sempre li stessi, come per esempio la funzione per aprire o chiudere un file, oppure la funzione per terminare un programma e ritornare al DOS.Eccovi le funzioni più semplici che spesso userete:L'interrupt 21h (files)
3dh
.......................................Apre un file3eh
.......................................Chiude il file3ch
.......................................Crea un file3fh
........................................Legge dal file40h
.......................................Scrive sul file4ch
.......................................Termina il programma ritornando al DOS4eh
.......................................Trova file
L'interrupt 16h (tastiera)
00h
.......................................legge una lettera dalla tastiera......01h
.......................................controlla lo stato della tastiera, cioè se è stato ..............................................premuto un tasto o meno
L'interrupt 17h (stampante)
00h
........................................stampa un carattere01h
........................................indica il parallel port da usare02h
........................................controlla lo stato della stampante
L'interrupt 10h (video)
02h
........................................posiziona il cursor sullo schermo09h
........................................visualizza un carattere sullo schermo diverse volte ...............................................con degli attributi definiti0ah
........................................visualizza un carattere sullo schermo alla posizione ...............................................del cursor
Ovviamente bisogna sempre definire esattamente una funzione, per questo avete bisogno di una lista completa degli interrupts e le loro funzioni.Prendiamo pure come esempio l'interrupt 10h e diciamo che vogliamo visualizzare un carattere usando la funzione 09h.Ora, il register "ah" sarà il nostro 09h, in "al" dovremo definire il carattere da visualizzare,in "bh" troveremo il video page dove il carattere verrà visualizzato, in "bl" gli attributi da usare e in "cx" il numero di ripetizioni per quante volte lo vogliamo visualizzare.
Oppure diamo uno sguardo più vicino all'interrupt 17h e la funzione 00h, cioè quella di stampare un carattere.Ah è ovviamente la nostra funzione 00h,in "al" dovrà esserci il carattere da stampare e in "dx" la porta di comunicazione da usare, dove LPT1 corrisponde a "0", LPT2 a "1", LPT3 a "2" ecc.
E poi ci sono ancora tutti i flags che segnalano eventuali errori oppure ci comunicano lo stato di una certa funzione.Per tutti queste "piccolezze" è necessaria una lista ben fornita, come la Ralf Brown's interrupt list.