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

Assembleur Discussion :

Division ~ Problème


Sujet :

Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Division ~ Problème
    Bonjour a tous,

    voila je suis un gros débutant en assembleur et donc pour l'école on a quelque travaux dirigés à réaliser (pas des trucs énormes, justes des petits exercices pour comprendre la base)

    dans l'un des exercices, on doit comprendre a manipuler les instructions div et idiv et c'est là que mon problème survient

    par exemple :
    lorsque j'essai de faire une division de 2 nombres signés, mon débugueur se plante méchament en m'affichant un "divide by zero" et je ne comprend pas parce que j'ai bien 2 nombres (signés, donc négatif) et j'utilise bien idiv

    ou encore, lorsque j'essai de diviser un nombre negatif par un nombre positif, j'ai un resultat correct en ce qui concerne le reste mais pour le quotient j'ai à chaques des resultats incorrect

    pour infos, j'utilise asm comme compilateur, et en ce qui concerne mes codes, voila un bref apercus :

    .MODEL small
    .STACK 100h

    .DATA
    v1 dw -10d
    v2 dw 5d
    v3 dw ?
    v4 dw ?

    .CODE

    main PROC

    mov ax,@data
    mov ds,ax

    mov ax,v1
    mov cx,v2
    idiv cx
    mov v3,ax
    mov v4,dx

    mov ax,4C00h
    int 21h
    main ENDP
    END main
    si quelqu'un saurais me mettre sur la bonne voie, merci

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 938
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !

    En fait, il ne s'agit pas d'une division par 0 mais plutôt d'un dépassement de capacité du quotient, qui ne "rentre pas" dans l'accumulateur.

    Il manque une chose essentielle à cette opération : pour une division par un diviseur de 16 bits, le dividende est contenu dans le couple de registres DX:AX et, après l'opération, le quotient se trouve dans AX et le reste dans DX.

    Donc, il manque l'instruction cwd, qui étend le dividende de AX vers DX:AX. Ton code doit donner ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mov ax,v1
    cwd
    mov cx,v2
    idiv cx
    mov v3,ax
    mov v4,dx
    et tu verras que le résultat est correct.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    ah ben voila qui est plus claire

    et enfaite c'est pareil pour le diviseur, il faut qu'il soit de la meme taille ?

    merci encore

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 938
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par foujino
    et enfaite c'est pareil pour le diviseur, il faut qu'il soit de la meme taille ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Diviseur  8 bits --> Dividende 16 bits - Quotient  8 bits - Reste  8 bits
    Diviseur 16 bits --> Dividende 32 bits - Quotient 16 bits - Reste 16 bits
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    yep yep merci beaucoup !!

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

Discussions similaires

  1. Problème de division
    Par luimême dans le forum Mathématiques
    Réponses: 4
    Dernier message: 04/05/2007, 17h41
  2. Problème de Division
    Par Dlyan dans le forum C++
    Réponses: 5
    Dernier message: 09/03/2006, 15h24
  3. Problème avec une division
    Par ghan77 dans le forum Débuter
    Réponses: 3
    Dernier message: 08/12/2005, 10h50
  4. problème de division par 100
    Par trent94 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/11/2005, 22h08
  5. [CR8.5] Problème de division par zéro sur formule
    Par franck.cvitrans dans le forum Formules
    Réponses: 3
    Dernier message: 10/06/2004, 13h41

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