Assembleur AGC4 |
CCS |
Count, Compare, and Skip |
Syntaxe
Paramètres
Nom |
Description |
K |
Ce paramètre permet d'indiquer l'étiquette de l'emplacement mémoire. |
Description
Cette instruction permet de copier une variable d'une adresse mémoire dans le registre accumulateur et d'effectuer un saut d'instruction basé sur la valeur de cette variable.
Remarques
- Le fonctionnement de cette instruction est assez complexe : La «valeur ABSolue diminuée» du contenu de l'emplacement mémoire K est chargée dans le registre A. La valeur absolue diminuée est définie comme DABS(x) = |x|-1 si |x|>1 ou +0 sinon. Si K est un registre de 16 bits comme A, L ou Q, son contenu peut contenir un dépassement + ou -, la correction de débordement n'est pas effectuée avant l'opération. Après le calcul du contenu de l'accumulateur, le contenu de K est «édité», si le K est l'un des registres CYR, SR, CYL ou EDOP, mais est par ailleurs inchangé par rapport à sa valeur d'origine. Un saut est effectué, en fonction du contenu original (non modifié) de K : si un dépassement supérieur à +0 ou positif existe, l'exécution continue à l'instruction suivante après le CCS. Si elle est égale à +0, l'exécution se poursuit à la 2ème instruction après le CCS. S'il y a moins de -0 ou un dépassement négatif, l'exécution se poursuit à la troisième instruction après le CCS. Si elle est égale à -0, l'exécution se poursuit à la 4ème instruction après le CCS. Si K est de 16 bits, le contenu d'origine peut contenir un dépassement + ou -, dans ce cas, la valeur est traitée comme + ou - non nulle, même si la valeur corrigée du signe aurait été 0.
- Une utilisation typique de cette instruction serait pour le contrôle de boucle, avec «CCS A».
- L'effet net de la façon dont le dépassement est traité lorsque K est A, L ou Q doit permettre des compteurs de boucles de 16 bits plutôt que de simples compteurs de boucles de 15 bits. Par exemple, si A contient +1 avec + débordement, alors CCS A place +0 avec + débordement dans A, et un autre A CCS place 037777 sans débordement dans A, et donc aucune anomalie n'est détectée lors de la décrémentation de + débordement à non débordement. Si K présente un dépassement négatif dans CCS, l'opération de valeur absolue le transformera en débordement positif. Toutes les conditions de débordement sont prises en compte avant cette opération; ainsi, si un K donné a un débordement négatif, la branche négative du CCS est prise.
Mnémonique
Instruction |
Opcode
|
CCS K |
10000 + K |
Dernière mise à jour : Lundi, le 8 octobre 2018