Accueil > Forum > > > > Modifer le vecteur d'interruptions
Modifer le vecteur d'interruptions
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ée 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
Executer 2 action en meme temps [ par HirOinEvOl ]
Bonjour, je souhaite exécuter les deux codes suivant mais simultanément pour qu'ils puissent tournés en parrallèles. Je n'ai trouvé aucun moyen de l
verification d'un code [ par marooh ]
Bonjour, j'ai écrit un code assembleur qui consiste à créer un tableau de 20 cases , de les remplir,de trouver le maximum et de faire la moyenne.mais
correction d'un code assembleur [ par marooh ]
Bonjour, j'ai ce code assembleur qui permet la creation d'un tableau de 10 cases et les remplir avec le chiffre 5.en l'utlisant avec tasm,il s'avère
prob avec une fonction [ par marooh ]
bonjour, j'ai un gros probleme j'ai écrit un code assembleur qui permet de trouver le mot le plus long et de l'afficher mais à l'execution il affiche
correction d'un code [ par marooh ]
bonjour,j'ai écrit un code assembleur qui permet de comparer deux tableaux,ce code je veux l'inserer dans un code c. si vous pouvez bien me le corrige
ERREUR DE SEGMENTATION en asm [ par tahsgh ]
salam; jai le code suivant ----------------------------------------- global main SECTION . text main :
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|