comment comparer 2 nombres si l'un est plus grand que l'autre en asm ?

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Carl, Papy.G, fneck

Répondre
Avatar du membre
rendomizer
Messages : 159
Enregistré le : 17 juin 2016 21:00
Contact :

comment comparer 2 nombres si l'un est plus grand que l'autre en asm ?

Message par rendomizer » 10 sept. 2017 17:03

Oui je me demande comment on compare deux nombres si l'un est plus grand ou plus petit en assembleur ?
le mot de passe c'est quoi ? quoi !

__sam__
Messages : 3755
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: comment comparer 2 nombres si l'un est plus grand que l'autre en asm ?

Message par __sam__ » 10 sept. 2017 18:35

Ca dépend du cpu, mais en général ils ont tous une instruction de comparaison. On la fait alors suivre par un saut conditionnel relatif au test plus grand (resp. plus petit) signé ou non. Si ils n'ont pas d'instruction de comparaison (cas très très très rare), et qu'il est en arithmétique complément à 2, il faut faire la soustraction des deux nombres et regarder le bit de poids fort du résultat. S'il est à 1, c'est que la soustraction a-b est strictement plus petite que 0, c'est à dire a<b.
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

Notator
Messages : 348
Enregistré le : 09 août 2015 20:13
Localisation : Lyon

Re: comment comparer 2 nombres si l'un est plus grand que l'autre en asm ?

Message par Notator » 10 sept. 2017 23:28

Ou faire la soustraction, et regarder le signe du résultat d'une autre façon ; pas mal de microprocesseurs ont un registre d'état, dont il suffit de tester le bit de signe négatif, qui indique évidemment si la valeur concernée est négative ou pas.

Avatar du membre
Mokona
Messages : 196
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: comment comparer 2 nombres si l'un est plus grand que l'autre en asm ?

Message par Mokona » 11 sept. 2017 00:38

Puisque j'imagine que tu poses la question pour le Z80 de ton projet VG5000, regarde du côté de l'instruction "CP" suivi, généralement, d'un "JR" conditionnel (JR NZ, JR C, JR Z, JR NC) qui branchera en fonction de l'état du registre d'état, comme indiqué dans les messages précédents.

Avatar du membre
rendomizer
Messages : 159
Enregistré le : 17 juin 2016 21:00
Contact :

Re: comment comparer 2 nombres si l'un est plus grand que l'autre en asm ?

Message par rendomizer » 28 sept. 2017 18:40

merci
le mot de passe c'est quoi ? quoi !

Répondre