Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1205 connectés 

  FORUM HardWare.fr
  Programmation

  PROGRAMMER UN MBR !!!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PROGRAMMER UN MBR !!!!

n°13594
ZgrEg
Posté le 09-02-2001 à 13:56:49  profilanswer
 

Comment fait on pour programmer un mbr en asm....jvoudrai la théorie et un petit exemple ki affiche hello par exemple... merci d'avance. hetadesu@yahoo.com

mood
Publicité
Posté le 09-02-2001 à 13:56:49  profilanswer
 

n°13628
krolours1
Posté le 09-02-2001 à 16:20:56  profilanswer
 

Va voir la : http://www.mega-tokyo.com/os/os-faq.html il ya plein d'infos sur le hard des pc et le développement d'os

n°13932
funkyboss
Posté le 12-02-2001 à 19:29:34  profilanswer
 

supposons que tu veuilles remplacer ton MBR par un autre. il faut d'abord sauvegarder ton ancien MBR sur le disque dur.
 
remarque : pour des raisons de compatibilité avec les anciennes FAT, la premiere piste du disque dur contient QUE le MBR, le reste est libre et le code du systéme d'exploitation ne commence qu'au secteur 1 cylindre 0 tete 1 de ton dique dur. c'est une astuce pour sauvegarder un secteur de boot (les virus font comme ca).
 
attention : tu dois t'assurer qu'il n'y a pas deja un programme qui a détourné le mbr sur un autre secteur de la piste 0
 
utiliser DEBUG sous DOS pour le faire:
à l'adresse X:100h compiler le code suivant:
 
mov ax,0201h ; 1 seul secteur à lire
mov bx,200h ; on lit le mbr à cs:200h
mov cx,1 ; secteur 1
mov dx,80h ; 80h = 1er disque dur
int 13h ;GO!
 
int 16h ;petite pause clavier et s'assurer lors de l'execution que le CF est à 0 - sinon il y a erreur de lecture !
 
mov ax,0301h ;ecriture
mov bx,200h
mov cx,2 ;sur le secteur 2 cylindre 0
mov dx,80h tete 0
int 13h ; sauvegarde
 
ensuite il reste plus qu'à ecrire le nouveau MBR au cylindre 0 tete 0 secteur 1
 
lorsque le pc démarre il charge le 1er secteur du disque dur (le MBR cylindre 0 tete 0 secteur 1) à l'adresse 0:07c0h ou 0:7c00h je sais plus - à verifier - et l'exécute tout simplement.
le MBR doit d'abord  
 
 (1) modifier la pile et placer le pointeur de pile à 0:7c0h, du style XOR AX,AX ;ax=0
      MOV SS,AX ,ss=ax
      MOV SP,7C0H
 (2) recopier le code du MBR en haut de la mémoire réservée au DOS - normalement tout en haut de la mémoire conventionnelle
pour cela il utilise l'interruption 13h
 
mov ax,0201h ;lire
mov bx,segment de destination
push bx
pop es ;bx->es ou mov es,bx
mov bx,offset de destination
mov cx,1 ;lire le secteur 1 tete 0 cylindre 0
mov dx,80h ;80h = 1er disque dur
int 13h
 
 (3) faire un saut far à l'endroit ou a ete recopié le code attention au pointeur d'instruction IP et le code continu à s'executer en haut de la mémoire
 (4) charger le MBR détourné à 0:7c0h dont le secteur d'amorcage est par exemple au cylindre 0,tete 0,secteur 2 soit le code :
 
mov ax,0201h ;lecture de disque dur et lire 1 seul secteur
mov bx,7c0h
xor es,es ;lire à 0:7c0h
mov cx,2 ;cylindre 0 et secteur 2
mov dx,80h ;tete 0
int 13h
 
 (5) executer l'ancien MBR à l'adresse 0:7c0h avec un jump far
 
pourquoi recopier le mbr en haut de la memoire ?
tout simplement parce que ton ancien mbr DOIT s'executer absolument à l'adresse 0:7c0h. si tu recopies 512 octets (taille d'1 secteur) à l'adresse 0:7c0h alors que justement le code qui fait cette opération est à un voisinage de 0:7c0h +/- 512 octets, le pc plantera à coup sûr.

n°13934
funkyboss
Posté le 12-02-2001 à 19:31:43  profilanswer
 

je conseille pour la proge en assembleur ; liste des interruptions ; E/S
www.ctyme.com

n°13936
funkyboss
Posté le 12-02-2001 à 19:42:13  profilanswer
 

avant int 16h il faut ajouter xor ax,ax pour mettre ax à 0


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  PROGRAMMER UN MBR !!!!

 

Sujets relatifs
Programmer en C++ sous LinuxProgrammer un filtre audio avec Matlab ?
Programmer un client FTP à l'aide des APIs Wininet.dll - HelpC + propre de programmer en C++ ou en Java
Comment programmer en PRO*C ? 
Plus de sujets relatifs à : PROGRAMMER UN MBR !!!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR