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

  FORUM HardWare.fr
  Programmation
  ASM

  assembleur 16bit en mode reel ou comment coder un bootsector perso

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

assembleur 16bit en mode reel ou comment coder un bootsector perso

n°1442513
sociopath_​epitech
dont ask me why
Posté le 14-09-2006 à 15:42:46  profilanswer
 

(2em  mea culpa)
 
 
bonjour tout le monde!
 
j'ai penser que peut-etre on pourrais me permetre de....
parler d'un sujet tres peu aborder sur le net.
vous me direz : "mais quel interet?"
et on pourrait repondre, "cultur general"...
 
nan je rigole.... la realite c'est que j'aurrais bien besoin d'un p'tit coup de pouce
et que j'ai deja lu des postes de gens qui debutais en faisant du 16bit.
 
il est vrai que le 16bit n'as plus beaucoup d'interet de nos jour,
mais il faut savoir que quand vous demarrer vorte pc...
les premieres instructions executee par votre processeur son des  
instructions 16bit.
'est le sujet de la formation que je suis en train de suivre.
et oui! le MBR et le secteur de demarrage des disques dur
sont coder en 16bit et sont executer en mode reel.
 
a la fin de cette formation je metrai en ligne mon rappor de stage
portan sur ce sujet
 
j'ai bien evidemment deja recolter un bon nombre d'information sur la question
et je serai ravis de repondre a d'eventuelle questions
 
je me permet donc de lancer un nouveau sujet de discution
afin de rassembler les gens que ca interesse et les gene qui s'y connaisse   :)
 
merci!
 
 
on peut revenir au sujet s'il vous plait?

Message cité 1 fois
Message édité par sociopath_epitech le 15-09-2006 à 16:05:40
mood
Publicité
Posté le 14-09-2006 à 15:42:46  profilanswer
 

n°1442698
jagstang
Pa Capona ಠ_ಠ
Posté le 14-09-2006 à 20:51:29  profilanswer
 

lis la faq au sujet du sms style pour commencer


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1442768
sociopath_​epitech
dont ask me why
Posté le 14-09-2006 à 23:53:05  profilanswer
 

sociopath_epitech a écrit :

bonjour tout le monde!
 
je me permet donc de lancer un nouveau sujet de discution
afin de rassembler les gens que ca interesse et les gens qui s'y connaisse   :)
 
merci!


 
c'est mieux?

n°1442770
jagstang
Pa Capona ಠ_ಠ
Posté le 14-09-2006 à 23:54:25  profilanswer
 

c'est le mininum vital pour que les gens aient envie de te lire


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1442772
sociopath_​epitech
dont ask me why
Posté le 15-09-2006 à 00:04:42  profilanswer
 

desolé.... je ne suis pas la depuis longtemp.
 
le sujet t'aurais-t-il quand meme un peu interesser?
 
(pardonner l'orthographe, j'ai preferé l'info a la sorbonne)
 
 :pt1cable:

n°1442779
mIRROR
Chevreuillobolchévik
Posté le 15-09-2006 à 00:15:10  profilanswer
 

moi ca m interresse j ai comme un soucis avec le mien mais j y connais rien :D

n°1442791
bjone
Insert booze to continue
Posté le 15-09-2006 à 03:26:42  profilanswer
 


oui, donc refais le premier post en lisible :D

n°1442883
sociopath_​epitech
dont ask me why
Posté le 15-09-2006 à 10:47:26  profilanswer
 

mIRROR a écrit :

moi ca m interresse j ai comme un soucis avec le mien mais j y connais rien :D


 
quel genre de soucis?

n°1443013
gilou
Modérateur
Modzilla
Posté le 15-09-2006 à 13:49:36  profilanswer
 

bjone a écrit :

oui, donc refais le premier post en lisible :D

Oui, il y a le bouton editer pour ça d'ailleurs.
Sinon, la moderation pourrait bien utiliser le bouton "envwayé ché lé TT (lol)"  :whistle:  
Corriger l'orthographe anglaise de la citation associée serait une cerise sur le gateau.
A+,


Message édité par gilou le 15-09-2006 à 13:50:54

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1444710
sociopath_​epitech
dont ask me why
Posté le 19-09-2006 à 16:25:13  profilanswer
 

je souhaite cree un secteur de demarrage qui lancerai un programme .COM
 
je me suis donc renseigner sur mon support.
ce sera une compact-flash en FAT16.
pour retrouver le fichier .COM la methode est donc asser simple
il faut charger les donnees du MBR en memoire, y retrouver la position de la  
partition FAT active, charger le "root directory" (repertoire racine) pour retrouver
la position du premiere cluster du fichier .COM. Bref, tous ca dans la tehorie c'est
bien joli mais dans la pratique....!
 
j'ai pas mal de problemes avec mes donnees... j'arrive bien a copier mes donnees du disque vers
la memoire, a les lire et tout et tout.... mais je lutte pas mal (bizzarement!) pour utliliser des valeurs
que j'ai rentrer en dur dans mon programme...
j'ai dus metre certaine valeur en dur pour recree l'entete d'une partition fat  
et il m'est impossible d'y acceder, elles sont toute erronee...
quelq'un aurrait-il une idee d'ou cela pourrait venir??
 
pour info: je joue beaucoup avec les registres de segment DS, ES et les index SI et DI

mood
Publicité
Posté le 19-09-2006 à 16:25:13  profilanswer
 

n°1445135
sociopath_​epitech
dont ask me why
Posté le 20-09-2006 à 11:39:15  profilanswer
 

bon j'ai finalement trouver...
le MBR charge bien le secteur de demarrage en 07c0:0000 mais  
le segment de donne avait un offset negatif de 0010:0000
j'ai donc du regler DS a 07B0 pour retrouver mes donnees

n°1445309
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-09-2006 à 14:10:07  profilanswer
 

de l'assembleur 16 bits [:totoz]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1445332
sociopath_​epitech
dont ask me why
Posté le 20-09-2006 à 14:46:22  profilanswer
 

:)  ne pleure pas Harkonnen, c'est pas grave!
 
je n'ai pas le choix, tout les secteur de demarrage sont codes ainsi....

n°1445530
bjone
Insert booze to continue
Posté le 20-09-2006 à 23:21:00  profilanswer
 

tu sais, même en mode réel tu as droit au 32bits :D

n°1445633
sociopath_​epitech
dont ask me why
Posté le 21-09-2006 à 10:19:44  profilanswer
 

certe....
mais sur une archi x86, au demarrage, la machine ne tourne qu'en 16bit....
ou alors, tout les articles que j'ai lu sont faux.
 
je vous donne mes sources :
http://www.interclasse.com/articles/boot.php
http://ata-atapi.com/hiwos2.htm
http://fr.wikipedia.org/wiki/File_Allocation_Table

n°1445712
bjone
Insert booze to continue
Posté le 21-09-2006 à 12:25:52  profilanswer
 

tu as deux choses:  
instructions 16bits ou 32bits
mode réel ou mode protégé

n°1445714
bjone
Insert booze to continue
Posté le 21-09-2006 à 12:26:38  profilanswer
 

ça dépends si tu veux faire un bootsector compatible 286  :whistle:

n°1445779
sociopath_​epitech
dont ask me why
Posté le 21-09-2006 à 14:33:39  profilanswer
 

dans l'idee, il faudrai que ce soit compatible avec le plus de machine possible.
et le programme que doit lancer le loader (qui sera lui meme charger par mon secteur de boot)
tourne deja en mode reel.
tu pense qu'il y aurait une possibilitee de fair le secteur de demarrage avec des instructions 32bit?

n°1445782
sociopath_​epitech
dont ask me why
Posté le 21-09-2006 à 14:37:16  profilanswer
 

sachant biensur que je m4ai droit qu'au interuption du BIOS

n°1446024
bjone
Insert booze to continue
Posté le 21-09-2006 à 23:37:20  profilanswer
 

oui tu peux avoir droit aux instructions 32 bits si nécessaire.
 
par contre utiliser des instructions 32 bits en mode généreront plus d'octets (dû à l'octet de préfixe et aux immédiats/offsets qui risque de prendre plus de place).
 
mais tu peux très bien te contenter de faire du 16bits, et uniquement du 32bits au besoin.


Message édité par bjone le 21-09-2006 à 23:40:45
n°1446212
sociopath_​epitech
dont ask me why
Posté le 22-09-2006 à 12:18:22  profilanswer
 

si je comprend bien... les jeux d'instructions sont les memes.
seul la taille des operandes change... c'est bien ca?
je pensai qu'il y avait un mode a activer pour passer en 32bit.
un peu comme le passage du mode reel au mode proteger...


Message édité par sociopath_epitech le 22-09-2006 à 12:18:46
n°1446317
bjone
Insert booze to continue
Posté le 22-09-2006 à 14:39:22  profilanswer
 

voilà.
 
en fait il y a un octet de préfixe (66h je crois), qui indique que l'instruction qui suit n'est pas en taille d'opérande courante.
 
ie, un mode réel, l'octet de préfixe spécifies l'instruction suivante en 32bits, et en mode protégé ce même octet de préfixe spécifies l'instruction suivante en 16bits.
 
(ndlr ce qui empêchait le pairage sur le Pentium 1: en mode réel tu pouvais pairer que des instructions 16bits et en mode protégé que des instructions 32bits).
 
- ça va de soit que même si tu as accès aux instructions 32bits (avec les registres eax, ebx....), tu reste en adressage 20bits avec segment:offset.
 
avec un assembleur ne supportant pas le ".386" pour autoriser le jeu d'instruction 32bits, tu peux tricher avec des db 66h:
 
style:
 
db 66h
xor ax,ax => xor eax,eax
 
par contre si y'a des immédiats ou des offsets, faut faire gaffe

n°1446988
sociopath_​epitech
dont ask me why
Posté le 25-09-2006 à 09:59:31  profilanswer
 

ok, super.
merci de l'info. c'est bon a savoir.

n°1447560
sociopath_​epitech
dont ask me why
Posté le 26-09-2006 à 13:37:37  profilanswer
 

voila... j'ai reussie a charger un fichier .COM en memoire.
maintenant je souhaiterai sauter jusqu'a lui mais je ne comprend pas bien ce qu'il ce passe...
je sais qu'il faut en realite sauter 100h plus loin que le debut du programme
(pour sauter la zone PSP) mais je me demande s'il n'y a pas autre chose a faire avant....
 
quelqu'un aurait-t-il une idee?

n°1447608
bjone
Insert booze to continue
Posté le 26-09-2006 à 14:26:55  profilanswer
 

ton .com il fait quoi ?
il utilise pas de services DOS j'espère ? :D
 
fait le tourner en boucle et afficher des conneries voir.

n°1447683
sociopath_​epitech
dont ask me why
Posté le 26-09-2006 à 15:34:43  profilanswer
 

je suis vraiment un boulet....
en plus je l'ais note plus haut.... en realiter c'est pas moi qui est pondu de petit .COM.
je n'ai pas verifier s'il en utilise ou pas...
je vais en faire un autre....  
 merci!
 
ce .COM etait sencer afficher "hi!".... mais il fait pres de 6Ko... il a dus etre assembler avec un million de lib.

n°1447708
sociopath_​epitech
dont ask me why
Posté le 26-09-2006 à 15:59:46  profilanswer
 

bon je viens de tester avec un tout petit .COM a la con qui affiche "hello" et qui n'a pas de PSP
je suis a peu pres sur que mon prog ne saute pas car CS ne bouge pas....
je charge mon programme "hello" en 5000:0000 et je souhaite sauter a cette adresse....
c'est possible?
 
j'utilise une machine virtuelle (bochs sous linux pour ceux qui connaisse),,, et je vois le message  
d'erreur:
00001459997i[CPU  ] LOCK prefix unallowed (op1=0x4b, attr=0x0, mod=0x0, nnn=0)
 
et je vois aussi:
00001460000i[CPU  ] | SEG sltr(index|ti|rpl)     base        limit       G D
00001460000i[CPU  ] |  DS:5000( 0000| 0|  0) 00050000 0000ffff 0 0          (regler par mes soins)
00001460000i[CPU  ] |  ES:5000( 0000| 0|  0) 00050000 0000ffff 0 0          (regler aussi par mes soins)
00001460000i[CPU  ] |  FS:0000( 0000| 0|  0) 00000000 0000ffff 0 0
00001460000i[CPU  ] |  GS:0000( 0000| 0|  0) 00000000 0000ffff 0 0
00001460000i[CPU  ] |  SS:0000( 0000| 0|  0) 00000000 0000ffff 0 0
00001460000i[CPU  ] |  CS:0000( 0000| 0|  0) 00000000 0000ffff 0 0
00001460000i[CPU  ] | EIP=0000010b (0000010b)


Message édité par sociopath_epitech le 26-09-2006 à 16:00:57
n°1447721
sociopath_​epitech
dont ask me why
Posté le 26-09-2006 à 16:09:13  profilanswer
 

oui bon..... je viens de voir qu'on pouvais pas sauter n'importe ou en memoire......
la c'etait un peu trop loin.... il faut que je trouve un autre endroit pour le charger en memoire....
desole pour le boulisme....


Message édité par sociopath_epitech le 26-09-2006 à 16:09:24
n°1447767
sociopath_​epitech
dont ask me why
Posté le 26-09-2006 à 17:51:40  profilanswer
 

voila... j'ai une version beta qui est capable de lancer un .COM ne comportant pas de PSP
il faudrai maintenant que je me panche sur ce fameux PSP...
quelqu'un aurait une idee?

n°1448211
sociopath_​epitech
dont ask me why
Posté le 27-09-2006 à 14:49:11  profilanswer
 

il va maintenant faloir que je fasse un .COM qui chargera un .EXE en memoire et qui le lancera.
cette operation (delicate!) consiste a lire le header du .EXE et de modifier toutes les adresse que contient le .EXE...puis enfin de sauter au bon endroit dans le programme,,,
ca va pas etre une mince affaire!
j'ai trouver ici http://cui.unige.ch/DI/cours/1840/ [...] truct.html le contenu du header
d'un .EXE... il je vais le decortiquer afin de savoir de quoi il retourne.
quelqu'un en serait-il peut etre deja plus?   ;)
un ptit coup de main ne serais pas de refus....

n°1449052
Scarmatil
magma idempotent
Posté le 28-09-2006 à 19:29:44  profilanswer
 

Une des meilleures réference que je connaisse sur les PE :
THE PORTABLE EXECUTABLE FORMAT : http://www.nikse.dk/petxt.html"
Il y a une version en français qui traîne sur le Net, mais je ne l'ai pas retrouvée.
 
enfin toussa c'est pas de l'asm...

n°1449410
sociopath_​epitech
dont ask me why
Posté le 29-09-2006 à 10:45:09  profilanswer
 

merci Scarmatil... :)
tout ca m'a l'air tres interessant... je vais me pencher dessus.
pourquoi pense tu que ce n'est pas de l'ASM?

n°1449592
sociopath_​epitech
dont ask me why
Posté le 29-09-2006 à 12:41:10  profilanswer
 

http://hyatus.newffr.com/TAZ/Rever [...] ortable%22
jej crois que la version francaise dont tu parlais est la au format pdf... mais je trouve ca bien compliquer  
comparer a mes besoin... de plus je manque de temp
mais merci quand meme! :)

n°1450710
sociopath_​epitech
dont ask me why
Posté le 02-10-2006 à 11:55:32  profilanswer
 

il me reste un dernier problemme a regler..
l'ors de mon saut en memoire jusqu'a mon .COM  
j'utilise un CALL, or calll ne peu pa me fair sortir du segment...
je ne peut donc pas charger mon prog ou je veux,,,,
comment pourrais-je faire pour faire un saut de la taille d'un segment (par exemple)...?

n°1450732
Mackila
Posté le 02-10-2006 à 12:53:00  profilanswer
 

[:drapal] pour la curiosité (j'ai déja eu à bazarder des instructions 32bits dans du code 16bits, à jouer avec vecteurs d'interruptions, à trifouiller la table des segments toussa).
 
Question du jour quand même : c'est quoi la finalité du bazar ? (lancer le code d'un .exe au démarrage de la machine, mais pourquoi faire ?)

n°1450745
bjone
Insert booze to continue
Posté le 02-10-2006 à 13:36:39  profilanswer
 

sociopath_epitech a écrit :

il me reste un dernier problemme a regler..
l'ors de mon saut en memoire jusqu'a mon .COM  
j'utilise un CALL, or calll ne peu pa me fair sortir du segment...
je ne peut donc pas charger mon prog ou je veux,,,,
comment pourrais-je faire pour faire un saut de la taille d'un segment (par exemple)...?


 
y doit bien y avoir un moyen de faire un jump far ?

n°1450831
sociopath_​epitech
dont ask me why
Posté le 02-10-2006 à 15:13:50  profilanswer
 

Mackila a écrit :

[:drapal] pour la curiosité (j'ai déja eu à bazarder des instructions 32bits dans du code 16bits, à jouer avec vecteurs d'interruptions, à trifouiller la table des segments toussa).
 
Question du jour quand même : c'est quoi la finalité du bazar ? (lancer le code d'un .exe au démarrage de la machine, mais pourquoi faire ?)


 
c'est pour des equipements embarques... genre ecran de control, la plateforme est une sorte de mini-pc avec un pitit ecran LCD assez mignon.

n°1450836
sociopath_​epitech
dont ask me why
Posté le 02-10-2006 à 15:19:50  profilanswer
 

bjone a écrit :

y doit bien y avoir un moyen de faire un jump far ?


 
oui, j'y ai pense mais je n'arrive pas a trouver de syntaxe correcte. j'ai fais plusieur tentative a tatton du genre
 

Citation :


 
PRG_START    equ     0800h   ;segment ou est charger mon prog
 
,,,,
 
jmp                  far ptr  PRG_START
 


ou

Citation :


jmp                  far ptr PRG_START:0000


 
biensur le "0800h" devrai pouvoir devenir un "5000h"
si ca peut aider, j'utilise MASM.....


Message édité par sociopath_epitech le 02-10-2006 à 15:21:47
n°1450886
bjone
Insert booze to continue
Posté le 02-10-2006 à 16:28:01  profilanswer
 

et via des registres style jmp es : di


Message édité par bjone le 02-10-2006 à 16:28:15
n°1450889
bjone
Insert booze to continue
Posté le 02-10-2006 à 16:31:15  profilanswer
 

normalement tu devrais pouvoir y arriver:
 
http://cui.unige.ch/DI/cours/1840/ [...] pcall.html
 

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

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

  assembleur 16bit en mode reel ou comment coder un bootsector perso

 

Sujets relatifs
Xlib : affichage d'image en mode 24 bits erronéNewsletter sur un site perso
VB ou C# mode graph Pour attaquer une Base MySQL ?Creer un forum sur sa page perso
[Fermé] Site perso / gallery2[LISP] Emacs major mode
Outils de profiling en tps reel et gratuitsscanf et lecture de réel
heure en temps reelPetit challenge perso avec Visual basic express ?
Plus de sujets relatifs à : assembleur 16bit en mode reel ou comment coder un bootsector perso


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