| Assembleur 370 |
TR |
| Translate |
Syntaxe
Paramètres
| Nom |
Description |
| D1(L1,B1) |
Ce paramètre permet d'indiquer l'adresse de départ des caractères à traduire. D1 : Déplacement (offset). L1 : Longueur (nombre d'octets à traduire, -1 codé sur un octet dans l'instruction ? permet de traduire de 1 à 256 octets). B1 : Registre de base donnant l'adresse de départ. Cela désigne un bloc de L1+1 octets en mémoire à traduire. |
| D2(B2) |
Ce paramètre permet d'indiquer l'adresse de départ de la table de traduction (table de 256 octets). D2 : Déplacement (offset). B2 : Registre de base pour la table. |
Description
Cette instruction permet de copier un octet à répétition dans un bloc de données.
Remarques
- L'instruction TR effectue une traduction caractère par caractère sur un bloc mémoire. Chaque octet à traduire est remplacé par la valeur correspondante dans une table
de 256 octets. C'est une forme de substitution binaire, utile pour le traitement de chaînes.
- La table de traduction fournie à D2(B2) agit comme une fonction de correspondance directe. L'octet source est utilisé comme indice dans la table pour obtenir l'octet
cible. Cela permet des remplacements massifs, rapides et personnalisables.
- Le paramètre D1(L1,B1) désigne le bloc à traduire, avec une longueur codée sur un octet dans l'instruction. Ainsi, on peut traduire jusqu'à 256 octets d'un seul coup.
C'est pratique pour transformer des chaînes sans boucles complexes.
- L'instruction TR modifie directement les données en mémoire, contrairement à d'autres instructions de test. Elle écrase chaque octet d'origine avec sa version traduite.
Il faut donc s'assurer que la traduction est bien voulue et irréversible.
- Cette instruction est particulièrement utile pour mettre en majuscule, remplacer des accents ou encoder des caractères. Elle est aussi employée dans des routines de
nettoyage ou de filtrage de texte. Son efficacité vient du traitement en mémoire sans appel de boucle.
- Le mécanisme repose sur le contenu binaire de chaque caractère comme index de la table. Par exemple, si l'octet source vaut X'41', TR va chercher la valeur à l'index
0x41 dans la table. Ce principe est simple, mais très puissant.
- La table doit comporter exactement 256 octets pour couvrir toutes les valeurs possibles (0 à 255). Une table incomplète ou mal alignée peut produire des résultats
imprévus. La précision dans la préparation de la table est donc essentielle.
- L'instruction TR est non conditionnelle : elle applique la traduction sans tester les valeurs. Cela signifie qu'aucune vérification n'est faite sur la validité des
caractères d'origine. Il convient de l'utiliser avec des données bien contrôlées pour éviter des erreurs.
Dernière mise à jour : Mardi, le 22 août 2017