cs_qsdfgh
Messages postés29Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention30 mars 2006
-
24 mars 2006 à 12:48
cs_qsdfgh
Messages postés29Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention30 mars 2006
-
28 mars 2006 à 18:56
bonjour,
je voudrais savoir comment convertir un fichier objet 16bit
cs_Nasman
Messages postés202Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention29 septembre 20083 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
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 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.
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 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.