Programme tsr (terminate & stay resident)

Contenu du snippet

salut,
avant toute chose, il faut savoir qu'un programme basic (non-tsr) a se mode de fonctionnement:

[Chargement du code en mémoire] ---==> [exécution du code] ---==> [désallocation de la mémoire occupée] ---==> [retour à dos]

les programme tsr ont un autre mode de fonctionnement:

[Chargement du code en mémoire] ---==> [exécution du code] ---=> [retour à dos]

Il faut savoir aussi, que pour qu'un programme soit résident, il faut reserver un certain nombre de paragraphes (1 paragraphe = 16 octets).(Il est fortement conseiller dans reserver 1 de plus par simple précaution.)

Ce code s'installe en mémoire et se désinstalle en janvier.

Source / Exemple :


LENGTH EQU END_PROG-START

start:
mov ax,4209h  ;
int 21h       ; regarde si le programme est déjà installé 
jc done       ; si oui, bye bye... 

mov ah,2ah              ; fonction qui récupère la dâte 
int 21h                 ; interruption qui lance la fonction 
cmp dh,01h              ; est-on en janvier?
je exit_tsr             ; si oui, on désinstalle tous

installe_tsr:
mov ah,31h              ; la taille total du programme/16 = nbrs de paragraphes a reserver (et le +1 reserve un paragraphe de plus)  
mov dx,(LENGTH/16)+1
int 21h

mov ah,4c00h       ;
int 21h            ;exit

exit_tsr:
mov ah,49h
mov es,(LENGTH/16)+1    ; c'est le nombre total de paragraphes que l'on veut désallocer
int 21h

mov ah,4ch         ;
int 21h            ;exit

done:
mov ah,4c00h       ;
int 21h            ;exit

END_PROG:
end start

Conclusion :


ps: tant que la partie [désallocation de la mémoire occupée] n'est pas effectuée, le code reste actif

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.