Mes contributions pour CPC / Amiga
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Mes contributions pour CPC / Amiga

Mes contributions pour l'Amstrad CPC et accessoirement l'Amiga
 
AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-49%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
319 € 622 €
Voir le deal

 

 additionner des nombres supérieurs à 65525 en assembleur

Aller en bas 
AuteurMessage
Kron1
Invité




additionner des nombres supérieurs à 65525 en assembleur Empty
MessageSujet: additionner des nombres supérieurs à 65525 en assembleur   additionner des nombres supérieurs à 65525 en assembleur EmptyLun 16 Mai - 15:10

Bonjour,

Je me suis remis à l'assembleur depuis peu,
(programmeur asm en 1986)

et j'ai oublié comment utiliser des nombres plus grands que 65535
avec un processeur 8 bits...

Pour faire le score d'un jeu, qui doit dépasser les 100.000, jusqu'a 500.000 ou 1 million par exemple, je cherche à additionner le résultat de 100.000 + 1000, etc

Comment faire ça en Z80 ? merci beaucoup Smile

Revenir en haut Aller en bas
Demoniak
Rang: Administrateur



Nombre de messages : 165
Age : 54
Localisation : Dunkerque (Nord)
Date d'inscription : 21/07/2005

additionner des nombres supérieurs à 65525 en assembleur Empty
MessageSujet: Re: additionner des nombres supérieurs à 65525 en assembleur   additionner des nombres supérieurs à 65525 en assembleur EmptySam 28 Mai - 11:15

Avec l'instruction ADC sur 16 bits, c'est possible de faire une addition 32 bits.
Voici un exemple :

Code:
    LD HL,(NombreLo)
    LD DE,(AddLo)
    ADD HL,DE
    LD (NombreLo),HL
    LD HL,(NombreHi)
    LD DE,(AddHi)
    ADC HL,DE ; on additionne ici en plus la retenue de l'opération précédente
    LD (NombreHi),HL
    RET
NombreHi: DW 1234
NombreLo: DW 5678
AddHi : DW 9876
AddLo : DW 5432
Revenir en haut Aller en bas
http://cpc-pja.forumactif.com
Kron1
Invité




additionner des nombres supérieurs à 65525 en assembleur Empty
MessageSujet: Re: additionner des nombres supérieurs à 65525 en assembleur   additionner des nombres supérieurs à 65525 en assembleur EmptySam 28 Mai - 20:33

Ah, merci beaucoup!

Ta solution est parfaite. 32 bits permettant d'aller jusqu'a 4,2 milliards je pense. (256^4)

Admettons que tu aies additionné 200.000 + 100.000 : tu obtiens 300.000, ok.

Ca ne rentre pas dans un registre 16 bits évidement.

Comment fait tu pour faire à la suite une autre opération : 300.000 + 50.000 ?

Tu stockes le résultat sur 2 registres 16 bits, c'est ça ?
Revenir en haut Aller en bas
Demoniak
Rang: Administrateur



Nombre de messages : 165
Age : 54
Localisation : Dunkerque (Nord)
Date d'inscription : 21/07/2005

additionner des nombres supérieurs à 65525 en assembleur Empty
MessageSujet: Re: additionner des nombres supérieurs à 65525 en assembleur   additionner des nombres supérieurs à 65525 en assembleur EmptyLun 6 Juin - 13:33

Kron1 a écrit:
Ah, merci beaucoup!

Ta solution est parfaite. 32 bits permettant d'aller jusqu'a 4,2 milliards je pense. (256^4)

Admettons que tu aies additionné 200.000 + 100.000 : tu obtiens 300.000, ok.

Ca ne rentre pas dans un registre 16 bits évidement.

Comment fait tu pour faire à la suite une autre opération : 300.000 + 50.000 ?

Tu stockes le résultat sur 2 registres 16 bits, c'est ça ?

En fait le résultat est stocké en mémoire, sur 32 bits. On peut effectivement le lire avec deux registres 16 bits
Revenir en haut Aller en bas
http://cpc-pja.forumactif.com
Contenu sponsorisé





additionner des nombres supérieurs à 65525 en assembleur Empty
MessageSujet: Re: additionner des nombres supérieurs à 65525 en assembleur   additionner des nombres supérieurs à 65525 en assembleur Empty

Revenir en haut Aller en bas
 
additionner des nombres supérieurs à 65525 en assembleur
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Mes contributions pour CPC / Amiga :: Le CPC en général-
Sauter vers: