code segment assume cs:code ; lincare con opzione /t ORG 0100h Start: jmp Inizio tastiera equ 60h altoparlante equ 61h premuto equ 80h bit_speaker equ 02h leggi_int equ 3509h scrivi_int equ 25h dos equ 21h tsr equ 27h old_int DW 2 dup (?) MioInt proc near push ax mov al,65 mov ah,0eh int 10h pop ax jmp cs:old_int ;salto extrasegmentale con prefisso mioint endp Inizio: mov ax,3509h ; richiesta di funzione 3509h int 21h ; restituisce il contenuto del ; vettore di interrupt (interrupt 09) ; cioe' l'indir. della routine di intr. mov word ptr old_int[0], bx ; salva l'indir. della routine di interrupt mov word ptr old_int[2],es ; originale in Old_int mov ax,2509h ; funzione 25h per scrivere nel vettore ;mov al,09h ; degli interrupt in posizione 09h l'indir ; della nuova routine di interrupt mov dx,offset MioInt ; DS:DX puntano alla nuova routine intr. int 21h ; setta il vettore con l'indirizzo ; della nuova routine d'interrupt lea dx,Inizio int tsr ;27h Terminate-and-Stay-Resident (TSR) code ends END Start