Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

J'ai laissé passer une erreur
JJE
Amateur
Amateur
Messages : 160
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#1 Message par JJE » sam. 12 mai 2018 19:24

Bonsoir à tous
J'ai laissé passer une erreur dans ma routine de soustraction 8 bits signés visible ici.
Je déclare impossible toute soustraction de le forme op1-(-128) sous prétexte que -128 n'a pas d'opposé (sur 8 bits !).
En fait, c'est l’algorithme mis en oeuvre qui ne doit l'être que si op2 diffère de -128.
Cette soustraction est évidemment possible si op1 est strictement négatif

Je propose donc le correctif suivant :

Code : Tout sélectionner


sub_8bits_signé
; réalise la soustraction de deux entiers 8 bits signés
; entrée :
;
     op1 opérande 1 
;     op2 opérande 2
; sortie :
;
     op1 inchangé
;    op2 remplacé par son opposé
;     result contient op1 - op2
;     STATUS,C armé si débordement
;     STATUS,Z armé si résultat nul
; remarque :
;
    utilise un niveau de pile
;     la banque mémoire contenant op1, op2 et result 
;     doit être sélectionnée
;     chaîne sur add_8bits_signé pour gagner un octet de code
    call    opposé_8bits_signé
    btfsc    STATUS
,C
    goto        sub_8bits_signé_1
    call        add_8bits_signé
    return
sub_8bits_signé_1
    
; ici on calcule op1-(-128) ce qui n'est possible que si
    ; op1<0
    btfsc        op1,7
    goto        sub_8bits_signé_2
    bsf        STATUS,C
    return
sub_8bits_signé_2    
    movf        op1,w
    addwf    op2,w
    movwf    result
    bcf    STATUS,C
    return
    


Comment le mettre à sa place ?

Avec mes plus plates excuses

Cordialement
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

J'ai laissé passer une erreur
Jérémy
Administrateur du site
Administrateur du site
Messages : 2231
Âge : 39
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » sam. 12 mai 2018 20:27

Comment le mettre à sa place ?


Je m'en charge. Je dois juste remplacer la partie soustraction ?.

Pas de problème ta contribution est déjà super sympa !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

J'ai laissé passer une erreur
Jérémy
Administrateur du site
Administrateur du site
Messages : 2231
Âge : 39
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » sam. 12 mai 2018 20:45

J'ai effectuer la modif , peux tu jeter un œil pour vérifier que je n'ai pas fait de boulette ?

Dis moi si tu veux changer la version et la date en début de code ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

J'ai laissé passer une erreur
JJE
Amateur
Amateur
Messages : 160
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#4 Message par JJE » dim. 13 mai 2018 10:30

Bonjour Jérémy,
Bien que ça ne me parraisse pas indispensable, tu peux remplacer

Code : Tout sélectionner

;**********************************************************************
;
                                                                     *
;
    NOM:      Test8bitsSignés                                        *
;
    Date:     13/04/2018                                             *
;
    Version:  1.0                                                    *
;
    Circuit:  sans objet                                             *
;
    Auteur:   JJE                                                     *
;
                                                                     *
;**********************************************************************


par

Code : Tout sélectionner

;**********************************************************************
;
                                                                     *
;
    NOM:      Test8bitsSignés                                        *
;
    Date:     12/05/2018                                             *
;
    Version:  1.1                                                    *
;
    Circuit:  sans objet                                             *
;
    Auteur:   JJE                                                     *
;
                                                                     *
;**********************************************************************


et ajouter avant la note

Code : Tout sélectionner

;**********************************************************************
;
                                                                     *
;
   Historique  
;                                   *
;
    Date:     13/04/2018                                             *
;
    Version:  1.0                                                    *
;
 ;    Date:     12/05/2018                                             *
;
    Version:  1.1   
;    Correction d'une anomalie dans sub_8bits_signé                                                 *
;                                                                     *
;**********************************************************************


Mais ça ne parait pas très grave su tu n'en a pas le temps

Cordialement
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

J'ai laissé passer une erreur
Jérémy
Administrateur du site
Administrateur du site
Messages : 2231
Âge : 39
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#5 Message par Jérémy » dim. 13 mai 2018 10:35

C'est fait !
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités