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

  1. #1
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    mars 2008
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 34

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

    Informations forums :
    Inscription : mars 2008
    Messages : 296
    Points : 518
    Points
    518

    Par défaut Soustraire un nombre 32 bits d'un nombre 64 bits

    pour additionner un nombre 32 bit a un nombre 64 bit je procède comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    add [nombre_64],eax
    adc dword[nombre_64+4],0
    je pense que j'ai juste besoin d'inverser eax pour effectuer une soustraction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    neg eax
    add [nombre_64],eax
    adc dword[nombre_64+4],0
    mais j'ai un doute pour savoir si ça fonctionne réellement (et si c'est propre) comment procéderiez vous?

  2. #2
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 647
    Points : 8 107
    Points
    8 107

    Par défaut

    Pour ton premier code , oui c'est comme ça que je fais d'additionner des nombres 16 bits sur un proc 8 bits !
    (ou des nombres 32 bits sur un proc 16 bits)
    Pour la soustraction j'utiliserai sub/sbc.

    Par contre ,ll faut bien penser à clear le carry pour l’addition (et le contraire mettre le bit du carry pour la soustraction).
    Je ne suis pas sur que add clear le carry si ?

    gosso modo chez moi ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ;additionne 1 à ma variable en 16 bits
    clc ;clear carry
    adc mavariable+0,#1
    adc mavariable+1,#0
     
    ;soustrait 1 à ma variable en 16 bits
    sec ;set carry
    sbc mavariable+0,#1
    sbc mavariable+1,#0
    (Bon dans cet exemple , c'est que certain vieux proc n'avait que le adc/sbc ).

  3. #3
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    mars 2008
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 34

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

    Informations forums :
    Inscription : mars 2008
    Messages : 296
    Points : 518
    Points
    518

    Par défaut

    j'avait cherché un peut trop vite un équivalent a adc mais pour sub, j'ai pensé que ça n'existait pas

    pour le x86 l'instruction c'est "sbb"(pour SuBstract with Borrow) et pas "sbc"

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

Discussions similaires

  1. Soustraire un nombre sur une ligne VBA
    Par audrey49 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/02/2014, 02h12
  2. Soustraire un nombre de mois à une dat
    Par Ondine_sas dans le forum SAS Base
    Réponses: 4
    Dernier message: 17/05/2011, 13h52
  3. Soustraire le nombre de lignes d'une requête à une autre
    Par zycomatic dans le forum Requêtes
    Réponses: 0
    Dernier message: 13/01/2011, 13h53
  4. soustraire un nombre de jours d'une date
    Par air75 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/02/2009, 23h16
  5. [Dates] Soustraire un nombre de jour à une date
    Par lesgars dans le forum Fonctions
    Réponses: 2
    Dernier message: 09/12/2005, 14h43

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