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 16-bits Assembleur Discussion :

call far en 16 bits


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre du Club

    Homme Profil pro
    passionné
    Inscrit en
    Octobre 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 29
    Points : 65
    Points
    65
    Par défaut call far en 16 bits
    bonjour,

    En 16 bits , est il possible d'appeler un prog situé dans un autre segment de code puis de revenir
    dans le segment de code initial ?

    ex:

    mov ax,cs ;ici cs vaut une certaine valeur
    mov ds,ax
    call "NEWcs:offset" ;NEWcs:offset est l'endroit où se trouve mon sous prog se terminant par un ret
    blabla ;poursuite du prog principal

    Car lorsque le processeur rencontre call "NEWcs:offset" ,cs prend la valeur NEWcs,le sous prog se déroule puis lors du ret on a le pop ip habituel qui renvoie bien l'offset de l'instruction suivant le call (blabla)
    mais la valeur de cs reste celle du segment où se trouve le sous prog et pas celui du prog original avant le call,donc ça plante
    J'ai essayé de faire push cs avant le call puis pop cs dans le sous prog avant le ret mais à priori pop cs n'est plus valable au dela des 8088.

    J'y arrive en faisant des jmp mais c'est pas pratique du tout.

    je travaille sous virtualbox pour l'émulation 16 bits .
    Merci pour vos conseils.

  2. #2
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    il faut faire un retf au lieu d'un ret simple

  3. #3
    Membre du Club

    Homme Profil pro
    passionné
    Inscrit en
    Octobre 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 29
    Points : 65
    Points
    65
    Par défaut
    Un GRAND MERCI bifur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TP]Différences Far call <-> Near Call
    Par denokan dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 02/12/2003, 10h01
  2. [BASM] Comment faire un "Far Call" ?
    Par - Robby - dans le forum Langage
    Réponses: 3
    Dernier message: 03/09/2003, 08h56
  3. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  4. Debugger 16-32 bits
    Par Mat dans le forum Assembleur
    Réponses: 4
    Dernier message: 28/06/2002, 11h34
  5. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 18h31

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