ECRITURE D'UN *.COM 16 BITS

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 24 août 2006 à 21:10
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 25 août 2006 à 15:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39257-ecriture-d-un-com-16-bits

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
25 août 2006 à 15:44
Je sais que ce sont surtout les fonctions de l'interruption 21h qui sont émulées. Les fonctions considérées comme dangereuses ne le sont que pour le système émulant le DOS. Elles ne le sont pas sous le vrai DOS. Le vrai DOS donne toute la puissance de la machine à l'application. Ce n'est pas le cas avec le DOS émulé.
vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 3
25 août 2006 à 11:05
non les accès aux interruptions -emulées elles aussi- sont autorisée, sauf pour certaines fonctions des "dangereuses" comme la 13h (accès disques), certaines instruction CPU sont aussi interdites (lgdt...) ainsi que l'accès au cr0, cr1...
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
25 août 2006 à 03:20
vinc1008881 >> Les fichiers .com ne sont pas des exécutables comme les autres. Ils n'ont pas d'en-tête. Le premier élément du fichier est un JMP vers une adresse relative. J'avais beaucoup travaillé sur ce genre d'exécutables dans les années 80 sous MS-DOS. Ils s'accaparent toute la mémoire disponible dans le système. Ils utilisent la pile du système. Bref, plein d'inconvénients. C'est pour cela que les fichiers .exe ont été inventés.
Le DOS 16 bits virtuel sous XP ou autres, n'est pas un vrai DOS. Beaucoup de fonctionnalités sont interdites. L'accès aux ports d'entrée sortie, l'acces aux interruptions etc. Mêmes certains programmes ne faisant pas appel à ces fonctionnalités refusent de tourner en mode virtuel ou plantent sans raison apparente. Ce n'est pas facile d'émuler un vrai DOS car pour cela il faut lui laisser l'accès à toutes les ressources du système.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 août 2006 à 22:38
Exact, sur un OS full 32 c'est le système qui émule un environnement 16 bits.
Ceci dit, bien d'accord que ça ne rime plus à rien de perdre son temps avec cela, obsolète depuis des lustres.
vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 3
24 août 2006 à 22:27
Ce programme écrit un simple *.com ;-) Voila pour les gros boutoneux qui tape du clavier H24 bah peu etre que ma source n'a pas d'interet encore une fois >> ça dépend du compilateur non? , gcc compilerait ça en 32 bits je crois.

Pour ceux qui sont fan du 16 bit, il y a tcc qui compile en 16 bits. Pour moi les fichier .com sont des excutables comme les autres, mis à part que la plupart du temps il n'y a pas d'entete, et leur execution ne se fait pas par MS-DOS en tout cas pas sur XP. MSDOS n'existe plus, et c'est le noyau de Win qui emule un environement 16 bits dans lequel ces executables peuvent fonctionner virtuellement.
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
24 août 2006 à 21:25
En fait, un fichier .com est une image conforme de ce qui sera exécuté par le microprocesseur. Sa taille ne devrait pas dépasser 64Ko. Il ne peut fonctionner que sur MS-DOS en 16 bits. Ils sont donc totalement dépassés.
Un fichier .exe contient un en-tête contenant plusieurs paramètres concernant son chargement et son exécution (pile, point d'entrée ... etc).
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
24 août 2006 à 21:10
Lol ! je pensais pas que c'était si simple un *.com

Sympa :)

Les éxécutables 32bits, c'est quoi qui change :) ?
Rejoignez-nous