- ;Ecrit par TotalIllusion (Eric Grand Maison)
- ;ISR veut dire Interrupt Service Routines et c'est indispensable
- ;de savoir comment les utiliser si quelqu'un pense
- ;a concevoire son propre OS ou meme pour modifier un system
- ;d'exploitation deja implenter (le dos par exemple)
- ;En fais c'est vraiment simple il suffit de mettre ladresse
- ;de notre routine dans la table des vecteurs
- ;qui ce trouve a ladresse 0.
- ;sorry pour le manque de ponctuation mais j'utilise un clavier englais
- ;Cette exemple a ete compiler avec tasm 5
-
-
- .model small
- .code
-
- LitCaractere proc far ;ici on declare notre routine
- push ax ;Chose indispensable est de
- ;sauvegarder les registre qui seront modifier par
- ;notre ISR
- mov ah,0h ;on met notre code
- int 16h
- pop ax ;On remet le system comme il etais
- iret
- LitCaractere endp ;Voila notre routine terminer
-
- debut:
- mov ax,0 ;Comme je les dit plutot la table des v
- ;ecteurs ce trouve a ladresse 0 donc il faut que
- mov es,ax ;je set ES a 0 pour y acceder car cest notre seul
- ;registre de libre et utilisable pour cela
- pushf ;on savegarde le registre des flag
-
- cli ;Toujour desactiver les interruption
- ;avance de changer la
- ;table des vecteur
-
- ;Ici j'ai decider de mettre comme interruption 88h mais vous pouver
- ;mettre celle que vous
- ;voulez mais faites attention de
- ;ne par modifier un vecteur deja existant du genre de 10h 13h 21h etc
- ;car elle ne
- ;seront plus accessible apres la ;modification
-
-
- mov word ptr es:[88h*4], offset LitCaractere
- ;on met notre adresse de routine
- mov word ptr es:[88h*4 + 2], seg LitCaractere
- ;on met ladresse du segment de notre routine
- sti ;on remet les interruption a ON
- popf ;on remet le registre des flag comme avant
-
-
- ;Maintenant il ne reste plus qua tester notre ISR pour voir si il fonctionne bien
- int 88h
- ;En fais notre routine ne fais qu'une seul choses, elle attent que
- ;nous pression une touche du clavier
- mov ax,4c00h ;fermeture du programme avec code de fin 0
- int 21h ;appelle au dos
- end debut ;fini
;Ecrit par TotalIllusion (Eric Grand Maison)
;ISR veut dire Interrupt Service Routines et c'est indispensable
;de savoir comment les utiliser si quelqu'un pense
;a concevoire son propre OS ou meme pour modifier un system
;d'exploitation deja implenter (le dos par exemple)
;En fais c'est vraiment simple il suffit de mettre ladresse
;de notre routine dans la table des vecteurs
;qui ce trouve a ladresse 0.
;sorry pour le manque de ponctuation mais j'utilise un clavier englais
;Cette exemple a ete compiler avec tasm 5
.model small
.code
LitCaractere proc far ;ici on declare notre routine
push ax ;Chose indispensable est de
;sauvegarder les registre qui seront modifier par
;notre ISR
mov ah,0h ;on met notre code
int 16h
pop ax ;On remet le system comme il etais
iret
LitCaractere endp ;Voila notre routine terminer
debut:
mov ax,0 ;Comme je les dit plutot la table des v
;ecteurs ce trouve a ladresse 0 donc il faut que
mov es,ax ;je set ES a 0 pour y acceder car cest notre seul
;registre de libre et utilisable pour cela
pushf ;on savegarde le registre des flag
cli ;Toujour desactiver les interruption
;avance de changer la
;table des vecteur
;Ici j'ai decider de mettre comme interruption 88h mais vous pouver
;mettre celle que vous
;voulez mais faites attention de
;ne par modifier un vecteur deja existant du genre de 10h 13h 21h etc
;car elle ne
;seront plus accessible apres la ;modification
mov word ptr es:[88h*4], offset LitCaractere
;on met notre adresse de routine
mov word ptr es:[88h*4 + 2], seg LitCaractere
;on met ladresse du segment de notre routine
sti ;on remet les interruption a ON
popf ;on remet le registre des flag comme avant
;Maintenant il ne reste plus qua tester notre ISR pour voir si il fonctionne bien
int 88h
;En fais notre routine ne fais qu'une seul choses, elle attent que
;nous pression une touche du clavier
mov ax,4c00h ;fermeture du programme avec code de fin 0
int 21h ;appelle au dos
end debut ;fini