begin process at 2012 05 25 03:19:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Système d'exploitation

 > 

Autre

 > 

demarrer MBR


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

demarrer MBR

mardi 3 avril 2007 à 13:01:40 | demarrer MBR

henri12

je demarre d une cle usb sous dos avant le lancement de la mbr du disque dur

je voudrais qu il lance la mbr de mon disque dur sans redemarrer 
 a l aide d un code asm  sous dos pour continuer a lancer le systeme d exploitation

es possible comment faire

merci
mardi 3 avril 2007 à 13:38:06 | Re : demarrer MBR

Guilou34

Ok, j'ai compris. Je pense qu'une solution serait de modifier le Ram du Cmos  et de faire un reset après avoir remplacé dasn cette ram la clef usb par la disque dur comme  périphérique de boot.
 En principe c'est à l'emplacement 2dh que cette information est renrégistrée.
 Pour lire un emplacement il faut faire : 

mov al,emplacement
 out 70h,al  ; séléctionne une adresse
nop     ;délai
nop
nop
 in al,71h ;lecture du contenu

et pour le modifier, remplacer le in al,71h par out al,71h
Il te faudra vérifier que dans ton cas c'est bien l'emplacement 2dh qui est utilisé donc
lire son contenu, aller dans le bios changer l'ordre du boot, relire 2dh et voir ce qui a changé. 
Je vais de ce pas tester sur mon PC cette procédure.
Bonne chance

mardi 3 avril 2007 à 14:41:49 | Re : demarrer MBR

Guilou34

Cela fonctionne parfaitement, mais chez moi deux emplacements sont utilisés: 65 et 7C
Boot à partir du floppy, ils continnent respectivement  D0 et  68 et pour le disque C: , D2 et 6A.
 Voici comment j'ai procédé avec debug (commande A=assemble) toutes les lignes sont suivies d'un return
Mov di,200
mov cx,7f
xor bl,bl
mov al,bl
 out 70,al
nop
nop
nop
in al,71
stosb
inc bl
loop 108 
g116
rbx
0
rcx
200
nc:\cmos.com
w
q
Ensuite j'ai modifié l'ordre du boot  suivid'un reset
et quand je retrouve la main :
debug c:\cmos.com
a100
mov di,300
g116
c220 2ff 320 
( c'est à dire comparer les deux lectures en négligeant le RTC et le checksum)  
 Mon bios est un Phoenix Award
ps: sauf erreur ou omission
mardi 3 avril 2007 à 15:04:42 | Re : demarrer MBR

patatalo

Membre Club Administrateur CodeS-SourceS
salut,


l'int 13h avec dl,80h ne fonctionne pas ?
sinon:
si code de lancement dans la plage 0:7c00h - 0:7dffh alors copie du code a 0:600h puis jmp code de lancement
lecture du mbr disque à 0:7C00h par bios int 13h(dx=80h, cx=1, es=0, bx=7C00h, ax,201h)
initialisation des segments et registres. (es=ds=ss=fs=gs=ax=bx=cx=si=di=sp=bp=0, dx=80h).
jmp far 0:7C00h


@++
mardi 3 avril 2007 à 15:27:13 | Re : demarrer MBR

patatalo

Membre Club Administrateur CodeS-SourceS
re,

un petit oubli, tu devras au préalable sauvegarder la table des vecteurs d'interruption du bios et la restaurer avant de sauter sur ton mbr disque.
(je pense que les vecteurs doivent toujours rester identiques d'un boot à l'autre mais verifie quand meme sinon, interdit l'option de copie du bios en ram peut etre).

@++

mardi 3 avril 2007 à 15:32:40 | Re : demarrer MBR

Guilou34

Pour Patalo
J'ai essayer en chargeant le mbr en 0:7c00 et en sautant à cette adresse avec  segemnts à 0 : plantage. J'ai  préféré incriminer le bios et son environnement avant le boot et  bidoullier le cmos. Pourrais-tu expliciter "copie du code a 0:600h pui sjmpcode de lancement" ? 
Amicalement
mardi 3 avril 2007 à 18:56:10 | Re : demarrer MBR

patatalo

Membre Club Administrateur CodeS-SourceS
re,



le code de ton mbr usb est certainement chargé comme tout les mbr a l'adresse 0:7C00h.
si tu inscrit un autre mbr par dessus, le premier code va etre écrasé et c'est le plantage assuré au retour de l'interruption de chargement.
pour eviter ce problème, tu dois copier ton premier MBR à une adresse non utilisée, eventuellement juste après la table d'interruption (0:0 - 0:3FF) et le bloc de données BIOS (0:400 - 0:5FF) ce qui donne 0:600h. et sauter à l'adresse qui continue:

start:
  copie de (end-start) octets de start vers 0:600h
  jmp far 0:(600h+lancement-start)
lancement:
  lecture du mbr disque à 0:7C00h par bios int 13h(dx=80h, cx=1, es=0, bx=7C00h, ax,201h)
  initialisation des segments et registres. (es=ds=ss=fs=gs=ax=bx=cx=si=di=sp=bp=0, dx=80h). (voir doc sur les params donnés par le bios au mbr pour complément)
  jmp far 0:7C00h
end:


@++
@++

@++

mercredi 4 avril 2007 à 12:20:54 | Re : demarrer MBR

henri12

auriez vous un code compiler que je peux essayer ou en asm pour debug

j ai compiler ce code il y a des erreurs

Mov di,200
mov cx,7f
xor bl,bl
mov al,bl
 out 70,al
nop
nop
nop
in al,71
stosb
inc bl
loop 108 
g116
rbx
0
rcx
200
nc:\cmos.com
w
q
mercredi 4 avril 2007 à 15:03:58 | Re : demarrer MBR

Guilou34

Ok. je vais creer une source et un module et je les placerai sur ce site en te prévenant une fois que ce sera fait ( un jour de delai).
jeudi 5 avril 2007 à 17:21:43 | Re : demarrer MBR

Guilou34

salut
j'ai codé scmos.asm et je l'ai placé sur ce site .
 Indépendamment de l'usage que tu pourrais en faire, le fait de pouvoir sauver le setup et le recréer m'a paru intéressant
Je l'ai testé avec succès: 
Dans msdos chargé à partir d'un floppy:
scmos  floppy
Dans windows chargé à partir d'un disque dur:
scmos disque
Il suffit d'exécuter floppy pour démarrer à partir de la disquette et de même avec disque pour le faire à partir du disque.
Maintenant, il n'est pas possible de terminer le programme généré par un reset du genre int 19h, parce que Windows néglige cette interruption.
Il faut donc utiliser scmos dans un fichier batch avec le reset approprié du système.

.


Cette discussion est classée dans : disque, dos, demarrer, mbr


Répondre à ce message

Sujets en rapport avec ce message

Interruption Bios ou Dos ? [ par Valmont ] Quand choisir d'utiliser une int Dos plutot que Bios et inversement qd il y a + ou - doublon, comme par ex. pour la lecture/ecriture de secteur sur un étapes pour compiler un programme masm sous dos? [ par samsara ] salut les amis, je suis une vraie débutante et j'aimerais savoir comment compiler mon programme sur masm.Dans le dos je fais : "masm montre.asm " (mo Aide chaine de caracteres, nasm sous dos [ par Juke ] quelqu'un peut t'il m'aider pour un truc tout con.Comment faire pour demander à l'utilisateur de saisir une chaine, et de lui reafficher ?j'ai des tut trouver le chemin du bureau ou menu demarrer [ par Cendra ] voila apres la creation de raccourcis , je cherche a les placer sur le bureau , mais j'ai pas trouver comment localiser le dossier... interruption du bios et du dos sous windows [ par eedy31 ] eedy31Salut a tous est ce que quelqu'un pourait m'aider car je ne sais pascomment faire pour utiliser les interruption du dos et du bios sous windows! logiciel boot [ par TRAX44 ] Salut, je voudrai faire booter mon pc sur un logiciel fait en asm et qui n'aurai pas besoin de windows ni de ms-dos afin d'utiliser toute la capacité NASM VESA ET DOS [ par Ludolpif ] Bonjour, et merci d'avance à ceux qui prennent la peine de lire ce message !J'aimerai créer 1 petit programme en ASM permettant sous dos de faire quel ou se trouve le système MS-DOS dans la RAM? [ par ibroman ] Bonjour,j'ai remarquer que pour un fichier .com, les adresses debutent avec un décalage de 100h.Ensuite que les adresses interruptions se trouve au de que choisir, le masm6 ou le 8? [ par Fildomen ] salutje débute en assembleur et j'ai bien aimé le masm, mais il me reste de choisir, le masm6 pour le dos qui a l'air facile, le masm8 32bits pour win Lecture d'un fichier sous DOS (débutant) [ par jezequel ] Bonjour !J'aimerai savoir comment lire un fichier de données (très volumineux) sous DOS avec un 286. Le fichier doit etre lu octet par octet, en boucl


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,560 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales