IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

[NASM] La directive "org"


Sujet :

x86 32-bits / 64-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut [NASM] La directive "org"
    Bonjour à tous, une petite question concernant la directive "org" avec nasm (qui permet si je ne dis pas de bêtises, de charger le programme en mémoire à l'adresse spécifiée): à quel endroit dois-je la placer dans le code ?

    Comment faire pour qu'elle soit reconnue par nasm ? car j'ai le droit à un joli "error: parser: instruction expected" quand j'essaye naïvement de la placer au tout début de mon programme (ex: org 100h), j'ai été consulter la doc mais il n'y a que peu d'exemples...

    Merci d'avance.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut
    J'ai déjà essayé avec cette forme-là (même erreur)...

  4. #4
    Membre Expert
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Par défaut
    Bonsoir,

    Org 100h c'est pour faire des programmes 16bits sous DOS
    Donc si ton programme n'en est pas un, il est normal que ça fasse une erreur

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut
    Ah merci! Mais alors, comment faire si je veux que mon programme commence à une adresse mémoire que je spécifie sous un autre système, dans mon cas, une Debian Gnu/linux 64 bits ?
    Veuillez excuser mes approximations de débutant en assembleur (par ailleurs je recherche un cours pour vraiment me former sur NASM)

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Bonsoir,

    ORG signifie « Origin ». Cela ne sert pas exactement à « charger le programme à un endroit donné » mais à indiquer au compilateur à quel endroit en mémoire on est censé se trouver au moment où l'on compile car l'adresse courante peut influer sur le calcul des codes opérations correspondant aux instructions, voire même être nécessaires : quand on fait un branchement (un saut vers une ligne donnée), la plupart du temps, ce branchement est relatif, c'est-à-dire qu'il est codé pour se déplacer de plus ou moins n octets par rapport à la position courante. Par contre, quand on pointe une donnée, par exemple si l'on veut charger l'adresse d'une chaîne de caractères spécifiée dans le code, alors c'est l'adresse exacte de la chaîne qui est chargée dans le registre concerné, à l'exécution. Il faut donc que ce soit la bonne dès le départ.

    Il existe certains codes opérations qui permettent là encore de charger une adresse effective par rapport à l'état du pointeur de programme. Un code entièrement « relatif » est dit « relocatable » en anglais. Même en faisant beaucoup d'efforts, il est assez rare de pouvoir s'affranchir systématiquement de toutes ces contraintes, si bien que les fichiers exécutables et autres ressources sont souvent pourvus d'une table de tous les « trous » à combler et adresses à corriger dans le programme, lequel est ainsi mis à jour par le système au moment du chargement.

Discussions similaires

  1. [NASM] Code 16 bits avec une directive 32 bits
    Par bubulemaster dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 09/10/2009, 17h29
  2. [NASM] Syntaxe des labels et de la directive times
    Par andromeda dans le forum Assembleur
    Réponses: 1
    Dernier message: 02/04/2007, 22h02
  3. Hors série PCTEAM sur Direct 3D
    Par Shakram dans le forum DirectX
    Réponses: 1
    Dernier message: 12/10/2002, 16h34
  4. La communauté Direct X est au repos?
    Par Shakram dans le forum DirectX
    Réponses: 21
    Dernier message: 18/07/2002, 23h32
  5. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo