Probleme avec NASM et ALINK

[Résolu]
Signaler
Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011
-
Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
-
Bonjour !

Voilà ma question :

Je commence à utiliser NASM mais j'ai quelques problemes avec le linker ; Alink.
Avec ce code (issu de la doc. de NASM donc je ne pense pas qu'il soit buggé) :

segment data
texte: db "Hello",13,10,"$",0

segment stack
resb 64
stacktop:

segment code
..start:

USE16
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,ax

mov dx,texte
mov ax,0
mov ah,9
int 0x21

mov ax,0x4c00
int 0x21

La compilation du .obj se passe sans problême , mais alink me dit :
Reloc 0:Segment selector relocations are not supported in PE files .
Le problême vient de l'initialisation de DS,SS et SP mais je ne voit pas comment faire autrement (de plus ces lignes de code viennent du manuel de NASM , donc ca devrait marcher normalement) .

Quelqu'un à une solution ?
Note : j'utilise la dernière version de NASM et la dernière version d'Alink .

2 réponses

Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
3
Bonjour epineurien,

Ton message d'erreur signifie que tu as essayé de créer un fichier de format PE (soit 32 bits pour windows) à partir d'un fichier 16 bits (directive USE 16 et initialisation des segments).


Si tu veux un exécutable 16 bits tu dois:


Pour Nasm:


           Nasm -fobj monfichier.asm [-o monfichier.obj]

Pour alink:
          alink -oEXE monfichier.obj [o monfichier.exe]

Pour les différents modes de compilation avec Nasm et alink, regarde une de mes sources:

http://www.asmfr.com/codes/CREATION-DIFFERENTS-EXECUTABLES-AVEC-NASM-ALINK_37036.aspx

A+
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

il faut que tu sache sous quel format tu veux l'assembler COM,MZ,PE ensuite verifie les parametres passés a alink.

@++