INDICATEURS Fonction Introduction
Fonction Indicateurs utilisateurs
Fonction Modifier le registre CCR
Fonction Indicateurs systèmes
Fonction Modifier le registre SR

Page précédente



 

Monter Descendre Retour Introduction
puce Un indicateur est un bit, il peut donc avoir deux états, 0 ou 1.

puce N'oubliez jamais que les indicateurs étudiés sont liés à la plupart des instructions car celles-ci les modifient. Mais nous pourront aussi les modifier directement dans certaines conditions.

puce Il y a plusieurs indicateurs, ceux-ci sont enregistrés dans le registre de statut nommé SR, la taille de ce registre est de 16 bits (mot).

puce Ce registre SR est constitué de deux type d'indicateurs, chaque type étant défini sur un octet.

    puce Une partie constituée des bit 15 à 8 contient les indicateurs système, appelée aussi octet-système. Octet car les bit 15 à 8 forment l'octet supérieur de SR.

    puce Une deuxième partie que nous utiliserons est constituée des bit 7 à 0, elle contient les indicateurs utilisateurs, elle est appelée registre de flags, ou encore octet-utilisateur mais surtout retenez que cet octet est reconnu par l'assembleur part le nom CCR. Octet car les bit 7 à 0 forment l'octet inférieur de SR.

puce Ce shéma simple du registre SR montre les différents indicateurs étudiés :
bit1514131211109876543210
indicateurT-S--masque---XNZVC
octet systèmeoctet utilisateur




 

Monter Descendre Retour Indicateurs utilisateur
Retour Indicateur C
Retour Indicateur V
Retour Indicateur Z
Retour Indicateur N
Retour indicateur X




 

Retour Indicateur C Carry flag
indicateur de retenue
Monter Descendre
puce Cet indicateur est armé si une retenue a été nécessaire lors de la dernière instruction.

puce Ceci se produit si le résultat ne peut pas être stocké dans la taille d'une mémoire, donc si le résultat dépasse 8, 16 ou 32 (selon la taille de la variable en question)





 

Retour Indicateur V oVerfolw flag
indicateur de débordement
Monter Descendre
puce Cet indicateur est armé (=1) si un résultat ne peut pas être stocké dans la taille d'une mémoire.

puce Pour un registre la taille est 32 bits, mais pour une variable dans un programme elle peut être 16 bits ou 8 bits.





 

Retour Indicateur Z Zero flag
indicateur de nullité
Monter Descendre
puce Cet indicateur est le plus simple, il est armé (=1) si le résultat d'une opération vaut zéro, dans tous les autre cas il reste inchangé.




 

Retour Indicateur N Negative flag
indicateur de signe
Monter Descendre
puce Dans les bases de Zguide, vous avez appris comment différencier un nombre signé d'un nombre non signé. C'est donc le bit de poid fort (soit 7, 15 ou 31) qui nous intéresse.

puce Si ce bit est armé alors l'indicateur N est armé lui aussi, inversement si ce bit est desarmé l'indicateur N est desarmé.





 

Retour Indicateur X eXtended flag
indicateur de retenue auxiliaire
Monter Descendre
puce Cet indicateur est la copie de l'indicateur C, mais n'est pas l'indicateur C !

puce En effet, l'incateur X ne changera pas à chaque fois que l'indicateur C changera, ceci vous permet de faire tout d'abord un contrôle (C et X sont alors armés), puis les instructions suivantes ne changeront que l'indicateur C mais pas l'indicateur X.

puce Vous pouvez alors faire des sauts selon l'état des deux indicateurs, ce qui veut dire qu'il faudra utiliser l'indicateur X.





 

Monter Descendre Retour Modifier le registre CCR
puce Il est tout à fait possible de modifier le registre CCR avec une valeur immédiate dont la taille est un octet, mais il y a des restrictions quant aux instructions à utiliser.

puce Nous ne pourrons qu'utiliser les instructions ANDI, EORI et ORI.

puce Il est inutile de spécifier la longueur des données car l'assembleur fait la diférence entre les registre CCR et SR.

PROBLÈME 1 :
puce On veut désarmer (=0) tout les indicateurs sauf l'indicateur Z qui devra garder sa valeur, pour cela il faut utiliser l'instruction ANDI.

PROGRAMMATION :
ANDI #%00000100,CCR; seul l'indicateur Z garde sa valeur

PROBLÈME 2 :
puce Les indicateurs X et N doivent être inversés, les autre gardent leurs valeurs, il faut utiliser l'instruction EORI.

PROGRAMMATION :
EORI #%00011000,CCR; les indicateur X et N sont inversés

PROBLÈME 3 :
puce On veut armer (=1) tous les indicateurs sauf l'indicateur V qui devra garder sa valeur, il faut utiliser l'instruction ORI.

PROGRAMMATION :
ORI #%00011101,CCR; seul l'indicateur V garde sa valeur





 

Monter Descendre Retour Indicateurs systèmes
Retour Indicateurs I
Retour Indicateur S
Retour Indicateur T




 

Retour Indicateurs I Iterrupt flags
masque d'interruption
Monter Descendre
puce Ce groupe d'indicateurs code une valeur entre 0 et 7 pour masquer certaines interruptions. Vous savez peut-ête déjà qu'il y a 7 interruptions automatiques (auto-int) qui sont des interruptions masquables, c'est à dire que nous pouvons leur interdire d'éxecuter le programme qui leur est associé.

puce Plus la valeur codée est petite (0 est le minimum), plus d'interruptions peuvent executer leur programme. Et inversement plus la valeur codée est grande (7 est le maximum), plus d'interruption ne peuvent plus executer leur programme.

PROBLÈME :
puce On veut désactiver le programme associé aux interruptions automatiques 1, 2, 3 et 4, il faut donc coder la valeur 4 (#4=%100).

PROGRAMMATION :
MOVE.w #%0000010000000000,D0; nouveau masque d'interruption (bits 8, 9 et 10 du registre SR)
TRAP #1; changement du masque d'interruption
D0.l contient le precedent registre SR





 

Retour Indicateur S Spervisor flag
indicateur de supervision
Monter Descendre
puce Si ce bit est armé, vous avez alors accès à plus d'instructions (elles sont toutes dans la partie Contrôle du Système), et vous pouvez aussi modifier l'octet système directement avec l'instruction MOVE et ce mode d'adressage.




 

Retour Indicateur T Trace flag
indicateur de localisation
Monter Descendre
puce Si ce bit est armé, alors une interruption sera appelée après chaque instruction.

puce Ceci est très souvent utilisé dans les debuggeurs car on peut faire marcher le programme ligne par ligne.





 

Monter Retour Modifier le registre SR
puce Il est possible de modifier les indicateurs système, et ceci de deux façons.

puce La première peut être utilisée sans aucune contrainte avec l'instruction TRAP.

puce La deuxième utilise la méthode employées pour le registre CCR mais l'indicateur S doit être armé, ceci avec la première méthode.

PROBLÈME 1 :
puce On veut tout d'abord armer (=1) l'indicateur S pour pouvoir utiliser la deuxième méthode par la suite.

PROGRAMMATION :
MOVE.w #%0010000000000000,D0; nouveau masque d'interruption (bits 8, 9, 10, 13 et 15 du registre SR)
TRAP #1; changement du masque d'interruption
D0.l contient le precedent registre SR





 

 

Lisez la section sur les droits d'auteur et la license d'utilisation avant de distribuer Zguide.

Zguide © 1998, Florian DREVET. Tous droits réservés à l'échelle mondiale