Accueil > Forum > > > > modification d'interruption au boot
modification d'interruption au boot
jeudi 1 novembre 2007 à 18:25:05 |
modification d'interruption au boot

Yoha
|
Bonjour, je me suis remis à l'assembleur (sous debug pour éviter les compilations) et j'ai modifié l'interruption 80h. Cela fonctionne très bien sous DOS lorsque mon programme est chargée à une adresse en 100h mais, après avoir fait "w cs:100 0 0 1" pour faire une disquette de boot, mon programme ne fonctionne pas. Après un peu de débogage, j'ai vu que l'erreur se produisait bien lors de l'appel à l'interruption. J'ai essayé avec 144h et 44h mais rien n'y fait.
Exemple de programme (fait sous Windows XP):
0CCE:0100 8CC8 MOV AX,CS
0CCE:0102 BB0000 MOV BX,0000
0CCE:0105 8EDB MOV DS,BX
0CCE:0107 A30202 MOV [0202],AX
0CCE:010A BB1501 MOV BX,0115
0CCE:010D 891E0002 MOV [0200],BX
0CCE:0111 CD80 INT 80
0CCE:0113 CD20 INT 20
0CCE:0115 B84109 MOV AX,0941
0CCE:0118 BB0F00 MOV BX,000F
0CCE:011B B90100 MOV CX,0001
0CCE:011E CD10 INT 10
0CCE:0120 B400 MOV AH,00
0CCE:0122 CD16 INT 16
0CCE:0124 CF IRET
-->
A
Fin normale du programme
Donc, pourriez-vous m'aider à gérer les interruptions au boot. Merci d'avance pour votre aide.
Au bon artisan, l'outil importe peu,
Yoha,
|
|
vendredi 2 novembre 2007 à 16:20:25 |
Re : modification d'interruption au boot

Guilou34
|
Pour Debug le secteur 0 est le premier secteur du DOS et ne permet pas d'accéder au premier secteur physique d'un disque ou disquette Il faut utiliser l'int 13h pour ce faire. De plus le bios lit le secteur 0 (physique) de la disquette de boot en 0:7C00 et saute à cette adresse. Dans ton cas, l'int 80h va pointer sur 0:115 et c'est le contenu de cette adresse qui va être exécuter c'est à dire n'importe quoi. Il faudra donc au moins remplacer 115 par 7d15 pour que ton programme fonctionne tel quel. A ceci près que l'int 20h étant une interruption Msdos et celui-ci n'étant pas encore chargé c'est aussi n'importe quoi qui sera effectué après IRET.
Amicalement.
|
|
vendredi 2 novembre 2007 à 17:29:52 |
Re : modification d'interruption au boot

Yoha
|
Pour l'interruption 20h, effectivement, je l'ai laissé pour les tests sous debug. En principe, je la remplace par un saut sur lui-même.
Le fait de faire:
0CCE:0100 8CC8 MOV AX,CS
puis:
0CCE:0107 A30202 MOV [0202],AX
ne me permet-il pas justement de donner le segment du code (7C00h) ? J'essaierais tout de même en remplaçant cette méthode générale par 7C00h.
|
|
vendredi 2 novembre 2007 à 18:09:08 |
Re : modification d'interruption au boot

Guilou34
|
Réponse acceptée !
7C00h est une adresse pas un segment ! C'est à 0000:7C00 que ton module sera chargé et exécuté par le BIOS avec CS=0 Donc ton code sera:
0000:7C00 8CC8 MOV AX,CS 0000:7C02 BB0000 MOV BX,0000 0000:7C05 8EDB MOV DS,BX 0000:7C07 A30202 MOV [0202],AX 0000:7C0A BB1501 MOV BX,115 0000:7C0D 891E0002 MOV [0200],BX 0000:7C11 CD80 INT 80 0000:7C13 CD20 INT 20 0000:7C15 B84109 MOV AX,0941 0000:7C18 BB0F00 MOV BX,000F 0000:7C1B B90100 MOV CX,0001 0000:7C1E CD10 INT 10 0000:7C20 B400 MOV AH,00 0000:7C22 CD16 INT 16 0000:7C24 CF IRET
Le nouveau vecteur de l'int 80 sera 0:115 alors qu'il doit être 0000:7C15 (et pas 7D15 comme je l'ai écrit par erreur.
|
|
vendredi 2 novembre 2007 à 18:58:17 |
Re : modification d'interruption au boot

Yoha
|
Mince, c'est sans doute ce qui me manquait... Dire que je n'avais pas vu ça ^^. Bon, je le teste et je dirais si cela fonctionne bel et bien. Merci en tout cas !
|
|
samedi 3 novembre 2007 à 11:06:53 |
Re : modification d'interruption au boot

Yoha
|
Oui, c'était bien cela. Après quelques essais j'ai réussit à faire un programme qui affiche les lettres A, B puis C, B l'étant par une interruption. Merci beaucoup de m'avoir aidé ! Il faudra que je lise plus attentivement désormais ^^.
|
|
Cette discussion est classée dans : mov, interruption, bx, boot, 0cce
Répondre à ce message
Sujets en rapport avec ce message
probleme avec l interruption affichage de chaine [ par M0NTOYA ]
bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP
probleme avec l interruption affichage de chaine [ par M0NTOYA ]
bon voila mon probleme ,qd j utilse cette procedure(presentation) pour afficher une chaine de caractere presentation PROC PUSHA MOV AH,09h INT 21h POP
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
pb d'affichage :s [ par rana ]
bjrje voudrais savoir, comment faire pour afficher une chaine de caractère en faisant une boucle (en utilisant repne scasb) jusqu a arrive a une lett
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
Probleme de boot [ par DbD ]
Bonjour,Alors je fais mon OS et j'ai des problème de boot a partir d'un disquette, sur certain pc ou quand le noyau depasse 40 secteurs ca boot plus
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
Aide affighage chiffre asm 8086 [ par MayouMX ]
Bonjour a tous, je dois programmer un pong en assembleur et la je butte pour l'affichage des scores.J'ai créer un segment qui ressemble a ca :exemple
pb affichage ligne [ par mat74 ]
salut a ts voila j'ai fait une fonction pr faire des lignes , j'ai deciner un carre a 100,100 jusqu'a 200,200 et sa marche nickel mais ia un ptit pb q
afficher bitmap 256 couleurs [ par mat74 ]
salut,voila j'aimerai afficher un bitmap de 256 a l'ecran en mode 320*200*256 ( fonction 12h de l'interruption 10h )j'ai fais un prog qui d'abord ouvr
Livres en rapport
|
Derniers Blogs
ENUMERABLECOLLECTIONENUMERABLECOLLECTION par Matthieu MEZIL
Prenons le scénario suivant. On utilise MVVM. On a les deux classes suivantes dans le model : public class Child { } public class Parent { private ObservableCollection < Child > _children; public ObservableCollection < Child > Children { get {...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [HS] CHROME 6 + MOI = COUP DE GUEULE ![HS] CHROME 6 + MOI = COUP DE GUEULE ! par JeremyJeanson
Attention, le poste qui suit n'est pas la complainte d'une personne : Qui n'aime pas Chrome. D'un anti Google. D'un développeur qui a un poil énorme dans la main. Ceux qui me fréquentent savent que je change de navigateur favori tous les 2 ou 3 mois afin ...
Cliquez pour lire la suite de l'article par JeremyJeanson [WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7[WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7 par Audrey
Lors de la réalisation de ma 2ème application Windows Phone 7, j'ai souhaité utiliser un WrapPanel pour afficher plusieurs photos. Mais le contrôle WrapPanel ne fait pas parti de la liste des contrôles inclus dans le SDK de la version Beta des outils pour...
Cliquez pour lire la suite de l'article par Audrey [WP7] BESOIN D'AVOIR DES DONNéES EN CACHE[WP7] BESOIN D'AVOIR DES DONNéES EN CACHE par Nicolas
Les développeurs ASP.NET ont l'habitude de mettre des données en cache pour éviter de requêter a chaque fois la base de données. Et il est toujours utilie de penser que vos utilisateurs mobiles n'ont pas troujours une super connexion 3G/WIFI et un for...
Cliquez pour lire la suite de l'article par Nicolas [TFS] COMMENT FORCER LA SAISIE D'UN AREA OU ITERATION[TFS] COMMENT FORCER LA SAISIE D'UN AREA OU ITERATION par cyril
Lorsque l'on créé un Work Item dans TFS, il est possible de le classer dans un "area" et dans une "iteration". Dans la plupart des types de projet, un "area" correspond à une catégorie, une "iteration" à un numéro de version. Il est possible de cré...
Cliquez pour lire la suite de l'article par cyril
Logiciels
uTorrent (2.0.4)UTORRENT (2.0.4)C'est un client BitTorrent très puissant et très performant. Comme son nom l'indique, uTorrent (m... Cliquez pour télécharger uTorrent Bureau de Gestion - ERP Devis Facturation (2.02)BUREAU DE GESTION - ERP DEVIS FACTURATION (2.02)- Version gratuite du 10/06/2010
Le Bureau de Gestion est un logiciel dédié à la gestion de l'en... Cliquez pour télécharger Bureau de Gestion - ERP Devis Facturation 4Videosoft Transfert iPod Mac (3.2.08)4VIDEOSOFT TRANSFERT IPOD MAC (3.2.08)4Videosoft Transfert iPod-Mac caractérise principalement à transférer les fichiers iPod vers Mac.... Cliquez pour télécharger 4Videosoft Transfert iPod Mac 4Videosoft HD Convertisseur (3.3.08)4VIDEOSOFT HD CONVERTISSEUR (3.3.08)Etant le meilleur HD Vidéo Convertisseur, 4Videosoft HD Convertisseur, vous pouvez regarder la vi... Cliquez pour télécharger 4Videosoft HD Convertisseur 4Videosoft Transfert iPad Mac (3.2.08)4VIDEOSOFT TRANSFERT IPAD MAC (3.2.08)4Videosoft Transfert iPad-Mac est un logiciel managérial iPad professionnel qui a des fonctions i... Cliquez pour télécharger 4Videosoft Transfert iPad Mac
|