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 ---
- 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 ---
Modérateur : mazertoc
J'ai laissé passer une erreur
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 :
Comment le mettre à sa place ?
Avec mes plus plates excuses
Cordialement
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
J'ai laissé passer une erreur
J'ai laissé passer une erreur
J'ai laissé passer une erreur
Bonjour Jérémy,
Bien que ça ne me parraisse pas indispensable, tu peux remplacer
par
et ajouter avant la note
Mais ça ne parait pas très grave su tu n'en a pas le temps
Cordialement
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
J'ai laissé passer une erreur
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Google [Bot] et 45 invités