Format

Résolu
cs_qsdfgh Messages postés 29 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 30 mars 2006 - 24 mars 2006 à 12:48
cs_qsdfgh Messages postés 29 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 30 mars 2006 - 28 mars 2006 à 18:56
bonjour,



je voudrais savoir comment convertir un fichier objet 16bit

pour dos en binaire plat



merci d'avance

9 réponses

cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
27 mars 2006 à 13:33
Bonjour qsdfgh,

Un fichier .com est un fichier binaire pur qui débute à l'offset 0x100h. Un unique segment est utilisé pour le code (.text), pour les données (.data) et la pile (.bss).
Les fichiers .sys ont une structure analogue mais débutent à l'offset 0.

Pour avoir un fichier .com avec Nasm tu dois mettre la directive
bits 16 ; Mode 16 bit (mode par défaut de Nasm)
org 0x100 ; Adresse de début .COM

et compiler ainsi
nasm -fbin monfichier.asm -o monfichier.com

Le fichier compilé n'a pas de header, il apparait seulement lors de son chargement (de l'offset 0 à 0xff

A+
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
24 mars 2006 à 18:17
salut,




le linker possede certainement une option pour sortir un .com
ça n'est bien sur possible que si ton objet fait moins de 64Ko une fois en binaire.

tu copie tes sections les unes derrieres les autre avec un header de X octets.
les X octets correspondent à la base des relocations pour l'exe, je ne sais pas sous DOS a combien est cette base.

@++
0
cs_qsdfgh Messages postés 29 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 30 mars 2006
27 mars 2006 à 08:30
je crois que tu n'as pas compris , je veux fiare du binaire lat pas un executable pour dos

mon but est de faire un programme en binaire plat avec turbo c mais je ne sais pas comment faire
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
27 mars 2006 à 09:24
re,




un fichier .com est un binaire plat.
sinon, y'a bien la solution du rouleau compresseur...

@++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_qsdfgh Messages postés 29 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 30 mars 2006
27 mars 2006 à 10:45
desole je l'ignorais merci beaucuop
0
cs_qsdfgh Messages postés 29 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 30 mars 2006
27 mars 2006 à 10:48
je n'ai pas tout compris , le .com est equivalent au .bin

(quand on fait nasm -f bin boot.asm ) ?

ou il faut lui elever un header de 256(?) octets
0
cs_qsdfgh Messages postés 29 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 30 mars 2006
28 mars 2006 à 17:04
merci je crois avoir compris pour le .com

mais tu ne serais pas si il est possible de faire un binaire

de plus de 64 k0 ?
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
28 mars 2006 à 18:47
salut,





tu ne peut pas faire de binaire flat en 16bits qui soit superieur a 64Ko étant donné que l'offset est physiquement limité a 64Ko, donc on utilise forcement les segments et c'est la mort du model flat.

le mode protégé (32bits,64bits) permet d'obtenir un offset de 4 milliards et quelques voir plus en 64bits (j'ai pas encore lu la doc 64bits d'AMD), et donc de programmer en model flat > 64Ko.

c'est pourquoi programmer en 16bits devrait etre réservé maintenant à des mbr,loaders ou bios.

@++
0
cs_qsdfgh Messages postés 29 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 30 mars 2006
28 mars 2006 à 18:56
tout a fait d'accord et merci



a plus
0
Rejoignez-nous