Exe simple codé sans linker

Messages postés
56
Date d'inscription
lundi 6 février 2006
Statut
Membre
Dernière intervention
30 avril 2013
- - Dernière réponse : 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 /!\ ','$'
Afficher la suite 

7 réponses

Messages postés
56
Date d'inscription
lundi 6 février 2006
Statut
Membre
Dernière intervention
30 avril 2013
0
Merci
excusez moi je voulait dire, l'int 21h et service 09h a la place de l'int 09h ...  ^^"
Commenter la réponse de Mareck666
Messages postés
69
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
22 mars 2010
1
0
Merci
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.
Commenter la réponse de edfed
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
Tu es de toutes façons obligé d'utiliser un linker, peu importe ce que tu fais !
_______________________________________________________________________
VB.NETis good ...VB6is better
Commenter la réponse de cs_ghuysmans99
Messages postés
31
Date d'inscription
vendredi 31 décembre 2004
Statut
Membre
Dernière intervention
31 juillet 2008
0
Merci
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.
Commenter la réponse de Nukleos
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
En fait il fait les deux choses dans le même EXE
_______________________________________________________________________
VB.NETis good ...VB6is better
Commenter la réponse de cs_ghuysmans99
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
0
Merci
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.


 


@++
Commenter la réponse de cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
0
Merci
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"

@++
Commenter la réponse de cs_patatalo