Assembleur 370 |
ICM |
Insert Character under Mask |
Syntaxe
Paramètres
Nom |
Description |
R1 |
Ce paramètre permet d'indiquer Le registre général dans lequel les octets vont être insérés. C'est un registre 32 bits (4 octets). Les octets à insérer peuvent être placés à n'importe quelle position dans le registre (octet 1 à 4), selon le masque. |
M3 |
Ce paramètre permet d'indiquer un masque de 4 bits, chacun correspondant à un octet du registre. Bit 1 (poids fort) → octet de gauche (bit 24 à 31), Bit 2 → bit 16 à 23, bit 3 → bit 8 à 15, bit 4 (poids faible) → bit 0 à 7 (octet de droite). Si un bit du masque vaut 1, l'octet correspondant du registre est remplacé par un octet en mémoire. Si un bit vaut 0, l'octet du registre reste inchangé. |
D2(B2) |
Ce paramètre permet d'indiquer l'adresse mémoire où se trouvent les octets à insérer. D2 : déplacement (offset), B2 : registre de base, → L'adresse effective = D2 + B2. |
Description
Cette instruction permet d'insérer des bits d'une opérande de masque de contrôle dans un registre.
Remarques
- L'instruction ICM permet d'insérer sélectivement des octets depuis la mémoire vers un registre 32 bits. Grâce au masque M3, on peut choisir précisément quels octets
modifier. Cela rend l'opération très flexible, surtout pour manipuler partiellement un registre.
- Chaque bit du masque M3 contrôle un octet du registre, de gauche à droite. Cela permet une gestion fine des données, utile dans les protocoles ou structures binaires.
On peut insérer 1 à 4 octets, selon les besoins, sans toucher aux autres.
- Le registre R1 conserve les octets non visés par le masque. Ainsi, il est possible d'insérer une nouvelle valeur dans un seul octet tout en préservant les autres.
Cela évite des sauvegardes et restaurations coûteuses en instructions.
- L'adresse D2(B2) pointe vers une zone mémoire contenant les octets à insérer. Cette source peut contenir de 1 à 4 octets selon le masque, lus séquentiellement de gauche
à droite. La correspondance entre masque et mémoire est implicite mais précise.
- ICM est souvent utilisée pour initialiser ou mettre à jour partiellement un registre avec de nouvelles valeurs. Elle est particulièrement utile dans les routines
système, les chargements conditionnels ou les manipulations de drapeaux. Elle combine efficacité et contrôle granulaire.
- Il faut faire attention à l'ordre des octets en mémoire lors de l'utilisation de ICM. Les octets sont insérés dans le registre dans l'ordre indiqué par le masque, pas
forcément de façon contiguë. Une erreur d'alignement peut entraîner des résultats inattendus.
- Cette instruction est aussi pratique pour reconstituer des entiers à partir d'octets séparés. Par exemple, on peut insérer les 4 octets d'une adresse mémoire répartie
dans différents segments. Cela simplifie le traitement sans faire plusieurs opérations distinctes.
- ICM est plus puissante que IC car elle permet de modifier plusieurs octets d'un coup. Elle est très adaptée à la manipulation de registres en environnement multitâche
ou à bas niveau. C'est une instruction clé pour optimiser la gestion des données dans les registres.
Dernière mise à jour : Mardi, le 22 août 2017