Bonjour,
ce prog lit simplement les adresses des gestionnaires d'interruptions situés dans l'IVT
(segment 0:offset (n°int*4) et les affiche en RAM vga texte (B800:....)
Num définit le n° de l'int voulue,le prog affiche l'adresse du gestionnaire et celle
des 15 int suivantes
assemblé sous NASM en .com
org 256
; affiche l'adresse du gestionnaire de l'interruption Num
; et celles des 15 int suivantes
%define Num 10 ;n° de l'int rechercher
%define NbreInt 16 ;nbre d'int à afficher au total
%define SegIvt 0 ;segment ou se trouve IVT en 16bits
%define total Num+NbreInt
%macro M160 1
;multiplie %1 par 160
;modifie ax et cx
;sortie: ax=1*160
mov ax,%1
shl ax,4
shl ax,1
mov cx,ax
add ax,cx
add ax,cx
add ax,cx
add ax,cx
%endmacro
%macro affiche 4
;affiche en ram vga texte 80*25
;x=%1 y=%2 Lptext=%3 couleur=%4
mov si,%3
mov bx,%1
mov di,%2
mov ah,%4
call VGA3
%endmacro
section .data
Buff db '0000',0
inter db 'INT ',0
ptv db ':',0
Y resw 1
Y160 resw 1
NumINT resw 1
section .text
push word SegIvt
pop es
push 0B800h
pop fs
mov ax,03h
int 10h
mov ax,3
mov [Y],ax
mov ax,Num
mov [NumINT],ax
boucle:
M160 word [Y]
mov [Y160],ax
mov bx,[NumINT]
mov di,Buff
call AFFval
affiche 2,word[Y160],inter,100b
affiche 7,word[Y160],Buff,100b
mov si,[NumINT]
shl si,2
mov ax,[es:si]
xchg bx,ax
mov di,Buff
call AFFval
affiche 38,WORD[Y160],ptv,110b
affiche 39,word[Y160],Buff,110b
mov si,[NumINT]
shl si,2
mov ax,[es:si+2]
xchg bx,ax
mov di,Buff
call AFFval
affiche 34,word[Y160],Buff,110b
inc word[Y]
inc word[NumINT]
mov ax,[NumINT]
xor ax,total
jnz boucle
mov ah,0
int 16h
ret
VGA3:
pushad
shl bx,1
VGA3_debut:
lodsb
cmp al,0
jz VGA3_fin
mov [fs:di+bx],ax
inc bx
inc bx
jmp VGA3_debut
VGA3_fin:
popad
ret
AFFval: ;transforme [bx] en caracteres ascii
pushad
;bits 15 à 12
push bx
shr bh,4 ;on ejecte les 4 bits faibles
call cherche
pop bx
;bits 11 à 8
push bx
and bh,00001111b ;mise à zéro des 4 bits forts
call cherche
pop bx
;bits 7 à 4
push bx
xor bh,bh
shr bl,4
xchg bh,bl
call cherche
pop bx
;bit 3 à 0
and bl,00001111b
xchg bh,bl
call cherche
popad
ret
cherche:
mov si,table
shr bx,8
mov al,[si+bx]
mov [di],al
inc di
ret
table db '0123456789ABCDEF',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.