Posté le 02/02/2008 à 11:01 Membre depuis le 14/02/2006, 1844 messages
Bonjour,


je voudrais juste savoir à quoi correspond c lorsqu'on effectue un saut conditionnel :

ex :

	ld	a,(x_raquette)
	cp	80
	jr	c,return
Posté le 02/02/2008 à 11:47 Membre depuis le 23/08/2001, 664 messages
Parmi les registres du processeur Z80 (comme A,B,C, ...), il y en a un spécial qui est modifié après certaines instructions : le registre F.
Si tu regardes une description du jeu d'instruction du Z80, comme celle-ci ou celle-là , tu peux voir une colonne "CZPSNH" qui montre comment chaque instruction modifie le registre F. Chaque lettre de "CZPSNH" correspond à un bit du registre F : C veut dire "carry" (en français : retenue) , Z pour "zero", P pour "positif" , N pour négatif , etc. On appelle communément les bits du registre F des flags. Les flags C et Z sont ceux qui servent le plus souvent.

Pour faire un saut qui dépend de l'état d'un flag, on utilise des instructions comme "JP Z, ...." , "JR C, ...." ou "CALL NZ,....". Un saut ou un appel qui contient Z ou C est effectué si le flag Z ou C est allumé; si il contient NZ ou NC, il est effectué si le flag Z ou C est éteint.

Dans ton exemple, tu charges une valeur dans le registre A, puis tu fais "CP 80". Cette dernière instruction fait la soustraction "A - 80" mais sans modifier le contenu de A (contrairement à "SUB 80" qui met à jour A). Cependant, elle met à jour certains flags, dont Z et C. Z est allumé si le résultat de la soustraction est 0 -- autrement dit, si A valait bien 80. C est allumé si la soustraction provoque une retenue -- autrement dit, si A était strictement inférieur à 80.
Posté le 02/02/2008 à 12:02 Membre depuis le 14/02/2006, 1844 messages
merci, c'est beaucoup plus clair !