;7. Sa se redirecteze intreruperea 14h. Noul handler va trebui sa verifice ; daca functia este 00h, daca nu sa se apeleze vechiul handler iar daca ; da, sa afiseze mesajul 's-au initializat parametrii pentru COM1 !' ; La al saselea apel sa se refaca vechiul handler. assume cs:cod cod segment org 100h start: jmp instalare ;partea rezidenta mesaj db "S-au initializat parametrii pentru COM1 ! $" minstalat db "Rutina a fost deja instalata $" Vechiip dw ? Vechics dw ? semnatura db "adi adi adi adi" handler: ;****RUTINA PROPRIE**** cmp ah,00h jnz ApelVecheaRutina push ax push ds push dx mov ah,9h push cs pop ds lea dx,mesaj int 21h ;dezinstalare noua rutina ;mov ax,2514h ;mov dx,word ptr Vechiip ;mov ds,word ptr Vechics pop dx pop ds pop ax iret ApelVecheaRutina: jmp dword ptr Vechiip instalare: ;verifica daca noua RTI nu a fost deja instalata mov ah,35h mov al,14h int 21h ;in es:bx avem adresa rti14h mov word ptr Vechiip,bx mov word ptr Vechics,es ;compara adresele RTI si NOUA_RTI cmp bx,offset handler jne neinstal ;compara semnaturile push cs pop ds lea si,semnatura ; ds:si contine adresa semnaturii ; es:si contine adresa semnaturii din vechea rutina mov di,si cld mov cx,handler-semnatura repe cmpsb jne neinstal mov ah,9h lea dx,minstalat int 21h ;terminare mov ax,4c01h int 21h neinstal: mov ah,25h mov al,14h push cs pop ds lea dx,handler int 21h mov ah,31h mov al,00h lea dx,instalare add dx,15 mov cl,4 shr dx,cl int 21h cod ends end start