Exe simple codé sans linker

Mareck666 Messages postés 56 Date d'inscription lundi 6 février 2006 Statut Membre Dernière intervention 30 avril 2013 - 22 mai 2008 à 18:57
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 29 mai 2008 à 15:51
Bonjour tout le monde, voila mon pb afin de mieu comprendre le format
EXE 16 bits (ok sa sert plus a rien de codé des application avec sa,
mai bn c'est pour ma culture perso..   ^^), j'essaye de codé un petit
exe simple qui affiche juste un msg grace a l'int 09h du dos et une
pause avec l'int 16h du bios, mai quand je le lance il ouvre un
terminal dos et tous de suite il se ferme.. je comprend toujour pas
pourquoi, sa serait vrément sympa de m'éclairé la dessus



[BITS 16]
[ORG 0X0]

MZ_DATA:
signature db 'MZ'
LENGHT_FILE_MOD_512 dw 0x20
LENGHT_FILE_DIV_512 dw 0x1

RELOCAT  dw 0x0
SIZE_HEADER dw 0x20
Min_Para dw 0x0
Max_Param dw 0xFFFF
StatckSegment dw 0x70
InitSP dw 0x0080
Checksum dw 0x0
initIP dw 0x0
initCS dw 0x000
DispRelocation dw 0x0
OverlayNr dw 0
times 512- ($-$$) db 0x90

start:
jmp start
mov ax, 0900h
mov dx, ph1
int 21h
xor ax, ax
int 16h
ret

ph1:
    db '/!\ test /!\ ','$'

7 réponses

Mareck666 Messages postés 56 Date d'inscription lundi 6 février 2006 Statut Membre Dernière intervention 30 avril 2013
22 mai 2008 à 19:06
excusez moi je voulait dire, l'int 21h et service 09h a la place de l'int 09h ...  ^^"
0
edfed Messages postés 69 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 22 mars 2010 1
22 mai 2008 à 19:10
hé hé.

utilise fasm, ça sera plus simple.
en effet, ce compilateur est capable de generer les formats MZ sans aucun probleme.

ensuite, pour avoir plus de souplesse et le faire soit meme, tu cherches sur le forum fasm, ou ailleur, et tu trouvera la reponce a ta question.

premiere chose qui me perturbe dasn ton code, c'est l'absence totalle de reference vers start ou les segments de donnés.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 mai 2008 à 20:34
Tu es de toutes façons obligé d'utiliser un linker, peu importe ce que tu fais !
_______________________________________________________________________
VB.NETis good ...VB6is better
0
Nukleos Messages postés 31 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 31 juillet 2008
26 mai 2008 à 22:08
il y a sans doute des erreurs dans ton pseudo-header
car autrement le programme bloquerait ici :



start:
jmp start

; boucle folle...

Patrick


P.S. pour [auteur/GHUYSMANS99/549970.aspx ghuysmans99] : FASM est atypique, il n'a pas besoin de linker.
0

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

Posez votre question
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
27 mai 2008 à 19:13
En fait il fait les deux choses dans le même EXE
_______________________________________________________________________
VB.NETis good ...VB6is better
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 mai 2008 à 17:40
oui, je pense que tu vois le header exe 16bits peut etre un peu simplement, ne serait-ce que le fait que tu n'initialise pas ds ??? tu dois pouvoir trouver de la docs sur ces vieux machins.

essai aussi d'utiliser le correcteur orthographique stp.


 


@++
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
29 mai 2008 à 15:51
re,

au fait, j'y pense, tous les exe PE ont ce code par defaut etant donné qu'ils affichent tous "This program requires m..soft W..ws"

@++
0
Rejoignez-nous