| Assembleur 370 |
TM |
| Test under Mask |
Syntaxe
Paramètres
| Nom |
Description |
| D1(B1) |
Ce paramètre permet d'indiquer l'adresse de l'octet mémoire à tester. D1 : déplacement (valeur immédiate). B1 : registre de base, contient une adresse. L'adresse effective est : Adresse = D1 + (contenu de B1). |
| I2 |
Ce paramètre permet d'indiquer un masque immédiat de 8 bits (1 octet). Chaque bit à 1 dans le masque désigne un bit à tester dans l'octet mémoire. Les bits à 0 sont ignorés. |
Description
Cette instruction permet d'effectuer un teste d'un masque de bit à bit.
Remarques
- L'instruction TM permet de tester certains bits d'un octet mémoire selon un masque binaire. Elle n'altère pas la mémoire : seul le registre PSW (Program Status Word)
est modifié. C'est donc une instruction de test pur, sans effet de bord.
- Le masque I2 précise quels bits doivent être vérifiés dans l'octet ciblé. Seuls les bits à 1 dans ce masque sont pris en compte dans le test. Cela permet une vérification
sélective et ciblée.
- Le résultat du test est interprété via les indicateurs conditionnels (Condition Code). Par exemple, si tous les bits masqués sont à zéro, le CC est mis à 0. Si au moins
un bit est à 1, le CC est mis à 1.
- Cette instruction est souvent utilisée pour vérifier des drapeaux ou indicateurs de statut dans des octets mémoire. Elle est couramment employée dans les structures
de contrôle, tampons ou registres de périphérique. Elle permet des décisions logiques rapides en fonction d'un état binaire.
- TM est plus rapide qu'une lecture et un test en deux étapes, car elle combine les deux en une seule instruction. Cela favorise la compacité et l'efficacité du code.
C'est une solution optimale dans des boucles de contrôle.
- L'adresse testée D1(B1) permet une flexibilité d'accès en mémoire, grâce à l'usage combiné d'un déplacement et d'un registre. Cela facilite le test d'éléments dans des
tableaux, zones dynamiques ou structures complexes. On peut parcourir des données de manière souple.
- L'instruction TM est non destructive : ni le masque, ni l'octet testé ne sont modifiés. Cela la rend sûre pour des contrôles sans impact sur les données. Elle est donc
idéale pour valider des états sans altérer la mémoire.
- Une mauvaise utilisation du masque I2 peut rendre le test inutile, si tous les bits sont à 0 (aucun bit testé). Il est donc crucial de bien définir le masque selon
l'objectif du contrôle. C'est une instruction simple, mais qui nécessite une bonne rigueur de codage.
Dernière mise à jour : Mardi, le 22 août 2017