ZuperIndex
SOMMAIRE
ZuperIndex
ADRESSAGES
Indicateurs Fonction TI-92 Introduction
Fonction TI-92 Indicateurs utilisateurs
Fonction TI-92 Modifier le registre CCR
Fonction TI-92 Indicateurs systèmes
Fonction TI-92 Modifier le registre SR Barre

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 Ce shéma simple du registre SR montre les différents indicateurs étudiés :
bit1514131211109876543210
indicateurT-S--masque---XNZVC
octet systèmeoctet utilisateur

Barre



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

Barre



Retour Indicateur C Monter DescendreCarry flag
indicateur de retenue

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)


Barre



Retour Indicateur V Monter DescendreoVerfolw flag
indicateur de débordement

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.


Barre



Retour Indicateur Z Monter DescendreZero flag
indicateur de nullité

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é.

Barre



Retour Indicateur N Monter DescendreNegative flag
indicateur de signe

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é.


Barre



Retour Indicateur X Monter DescendreeXtended flag
indicateur de retenue auxiliaire

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.


Barre



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


Barre



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

Barre



Retour Indicateurs I Monter DescendreIterrupt flags
masque d'interruption

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


Barre



Retour Indicateur S Monter DescendreSpervisor flag
indicateur de supervision

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.

Barre



Retour Indicateur T Monter DescendreTrace flag
indicateur de localisation

puce Si ce bit est armé, alors l'interruption TRACE (interruption d'anomalie) sera appelée après chaque instruction, le vecteur de cette dernière est à l'adresse $000024.

puce Ceci est très souvent utilisé dans les debuggeurs car il est possible d'exécuter le programme voulu instruction par instruction (mode pas à pas).


Barre



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


Barre



 

 

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

Zguide © 1998 - 1999 par Florian DREVET. Tous droits réservés