|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Modifer le vecteur d'interruptions [ Archives / Forum general 80xxx ] (vecchio56)
Informations & options pour cette discussion
mercredi 31 août 2005 à 15:10:05 |
Modifer le vecteur d'interruptions

vecchio56
|
Bonjour J'essaie de refaire la source http://www.cppfrance.com/code.aspx?ID=33558 en assembleur (ca consiste à modifier la routine de l'interruption 08h). Le problème est que programme se termine aussitôt après avoir été lancé. Voici mon code: .model small .stack .data oldTimerSegment DW ? oldTimerOffset DW ? .code ; place la valeur de ds dans le code pour pouvoir le récupérer ; dans myTimer DataSegment DW ? myTimer: push ax bx dx mov ah, 2 mov dl, '.' int 21h mov ax, DataSegment mov es, ax mov ax, es:oldTimerSegment mov bx, es:oldTimerOffset mov es, ax call es:[bx] pop dx bx ax iret main: mov ax, @data mov ds, ax mov DataSegment, ax ; Modification du vecteur d'interruptions xor ax, ax mov es, ax mov bx, 20h ; 8*4=20h ; premier mot: offset de la procédure mov ax, es:[bx] mov oldTimerOffset, ax mov ax, offset myTimer mov es:[bx], ax ; deuxième mot: valeur de segment de code mov dx, es:[bx+2] mov oldTimerSegment, dx mov ax, cs mov es:[bx+2], ax ; attend l'appui d'un touche mov ah, 1 int 21h mov ah, 4Ch int 21h end main
|
|
|
mercredi 31 août 2005 à 19:08:20 |
Re : Modifer le vecteur d'interruptions

vecchio56
|
J'ai modifié plusieurs choses mais j'y arrive toujours pas. Mon programme se comporte différemment: des fois il plante, des fois il affiche des pointes puis il s'arrête, des fois il se termine tout de suite...
.model small .stack
.data oldTimerSegment DW ? oldTimerOffset DW ?
.code
; place la valeur de ds dans le code pour pouvoir le récupérer ; dans myTimer DataSegment DW ? compteur DW 0
myTimer: push ax ds es
; simule un int: empile flags, cs et ip pushf push cs push offset ip_
mov ds, DataSegment inc compteur cmp compteur, 18 jne noReset mov compteur, 0 mov ah, 2 mov dl, '.' int 21h noReset:
mov ax, oldTimerSegment mov es, ax
ip_: jmp es:oldTimerOffset ; appel de la routine par défaut
pop es ds ax iret
main: mov ax, @data mov ds, ax mov DataSegment, ax
; Modification du vecteur d'interruptions xor ax, ax mov es, ax mov bx, 20h ; 8*4=20h
mov ax, es:[bx] mov oldTimerOffset, ax mov dx, es:[bx+2] mov oldTimerSegment, dx
mov ax, offset myTimer mov dx, cs cli mov es:[bx], ax mov es:[bx+2], dx sti
mov ah, 1 int 21h
mov ah, 4Ch int 21h
end main
|
|
|
jeudi 1 septembre 2005 à 10:42:11 |
Re : Modifer le vecteur d'interruptions
|
jeudi 1 septembre 2005 à 11:17:12 |
Re : Modifer le vecteur d'interruptions
|
jeudi 1 septembre 2005 à 11:36:15 |
Re : Modifer le vecteur d'interruptions

patatalo
|
re, quand tu finis un programme avec la fonction 4C de l'int 21h, cela veut dire que ton programme doit etre déchargé de la memoire. La memoire ainsi libérée est utilisée pour un autre programme. tu dois rendre ton programme résident ( il doit rester en mémoire ) je crois que c'est l'int 27h qui fait ça ( dx prends le nombres de paragraphes ).
lors du déchargement de ton programme, n'oublie pas de remettre le vecteur d'interruption vers la bonne addresse. @++
|
|
|
jeudi 1 septembre 2005 à 11:42:23 |
Re : Modifer le vecteur d'interruptions

vecchio56
|
mov ah, 1 int 21h
Ca attend l'appui d'une touche sur le clavier, donc normalement mon programme va rester résident. Il y a donc un problème ailleurs
A quoi ca sert de remettre la bonne adresse à la fin, puisque mon programme se termine?
|
|
|
jeudi 1 septembre 2005 à 12:08:39 |
Re : Modifer le vecteur d'interruptions
|
jeudi 1 septembre 2005 à 12:12:24 |
Re : Modifer le vecteur d'interruptions

vecchio56
|
Une boucle infinie ca prend un peu trop de cpu a mon gout. Quand je change pas l'interruption, le programme attend toujours l'appui... Tu sais comment on fait un flush en asm? Au fait je suis sous XP, donc en mode virtuel et pas en mode réel, donc la table d'interruption n'appartient qu'a mon programme, non?
|
|
|
jeudi 1 septembre 2005 à 12:39:33 |
Re : Modifer le vecteur d'interruptions
|
jeudi 1 septembre 2005 à 12:51:43 |
Re : Modifer le vecteur d'interruptions

vecchio56
|
J'appelle une routine d'interruption, mais comme elle va dépiler cs, il faut que je l'empile avant Merci pour le lien et pour ton aide
|
|
|
Cette discussion est classé dans : code, mov, ax, bx, dx
Répondre à ce message
Sujets en rapport avec ce message
rs232 [ par TRAX44 ]
salut,tout premièrement je sais qu'il ya des exemples sur le site!mais mon problème est autre je tiens à comprendre pourquoi mon code ne fonctionne pa
pb int 21h ah=0ah [ par mat74 ]
salut a ts ,voila j'ai fais un programme qui est censé lire une chaine entré par l'utilisateur et ensuite la reafficher . Il me demande bien d'entré u
petit probleme de debutant [ par freekc ]
j'essaie de faire un ptit prog que lorsque l'on rentre son nom prenom etc . Il y est un recapitulatif qui se mette en dessous ms lorsque que le recapi
Ennoncés à corriger svp :-) [ par did2604 ]
Bonjour à tous,Mon professeur m'a demandé de convertir les énoncés (en langage C) suivants en assembleur, quelqu'un aurait-il la gentilesse de me les
loader problème de code [ par TRAX44 ]
salut tout le monde !!g essayer de faire un loader (petit prog qui charge un autre prog) mais c un desartre je comprend pas très bien ce qui ne marche
pb affichage console [ par mat74 ]
voila je cherche a faire un prog qui affiche 0 ou 1 en fonction de la valeur de ax . et le teste est ds une procedure . mais il y a un pb le prog n'af
Multiplication de deux nombres compris entre 0 et 99 en assembleur [ par petitspirou ]
salut, j'ai un programme a faire mais je suis nul en assembleur, voici ce que j'ai fais mais ca ne fonctionne pas.Quelqun peut'il me le corriger et me
Conversion hexa vers ascii [ par Cygace ]
Bonjour voici un code asm qui convertit un nombre binaire vers de l'ascii. Mais je dois modifiier ce code pour qu'il convertisse de l'hexadecimal vers
Affichage [ par AMENO ]
Cher amis aidez moi, c'est une partie de mon examen de noel. et je suis bloquerenfin il 'sagit d'un programme que l'on doit entrer jsuqu a 32 caracter
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|