;détournement d'une interruption bios ;ex avec 11h (config système) qui devient 10 h(mode vidéo) ;------------------------------------ org 100h ;avant de bidouiller on sauvegarde le mode video courant ;------------------------------------------------------- mov ah,0fh int 10h mov [modeVideo],al ;obtention des adresses des gestionnaires de int 10h et int 11h ;-------------------------------------------------------------- push 0h ;adresse début IVT pop fs ;devient notre segment de données mov edx,40h ;correspond à l'entrée 10h xor ax,ax mov ax,[fs:edx] ;ax contient le word n°1 du pointeur FAR (=segment) mov [FAR_segment_bios_10h],ax mov ax,[fs:edx+2] ;ax contient le word n°2 (=offset) mov [FAR_offset_bios_10h],ax ; [FAR_segment_bios_10h]:[FAR_offset_bios_10h]=adresse du gestionnaire de int 10h mov ax,[fs:edx+4] ;idem pour int 11h mov [FAR_segment_bios_11h],ax mov ax,[fs:edx+6] mov [FAR_offset_bios_11h],ax ; [FAR_segment_bios_11h]:[FAR_offset_bios_11h]=adresse du gestionnaire de int 11h ;remplacement de l'adresse du gestionnaire de int 11h par celui de int 10h ;------------------------------------------------------------------------- mov ax,[FAR_segment_bios_10h] mov [fs:edx+4],ax mov ax,[FAR_offset_bios_10h] mov [fs:edx+6],ax ; test ;------ mov ah,0 mov al,13h ;vga 320*200 256 couleurs int 11h ;+++++++++++ revient à int 10h push 0a000h pop fs mov edx,10 xor ax,ax mov al,5 mov [fs:edx],ax ;on allume un pixel ;tempo ;----- int 16h ;on attend une frappe clavier ;on remet tout dans l'ordre (int 11h redevient int 11h) ;------------------------------------------------------ mov ax,[FAR_segment_bios_11h] mov [fs:edx+4],ax mov ax,[FAR_offset_bios_11h] mov [fs:edx+6],ax ;on remet le mode video du départ pour sortir proprement ;------------------------------------------------------- mov ah,0 mov al,[modeVideo] int 10h ret modeVideo db 0 FAR_segment_bios_11h dw 0 FAR_offset_bios_11h dw 0 FAR_segment_bios_10h dw 0 FAR_offset_bios_10h dw 0
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.