| Assembleur 370 |
LH |
| Load Halfword |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer le registre général dans lequel sera chargé le demi-mot signé. Le registre est de 32 bits, donc l'instruction signe-étend les 16 bits à 32 bits : Si le bit de signe (bit 15) vaut 1, les 16 bits de poids fort du registre seront mis à 1. Sinon, ils seront mis à 0. |
| D2(X2,B2) |
Ce paramètre permet d'indiquer l'adresse mémoire effective du demi-mot à charger, calculée comme : Adresse effective = D2 + contenu de X2 + contenu de B2. D2 : déplacement (offset, valeur constante), X2 : registre index (optionnel, peut être 0), B2 : registre de base. |
Description
Cette instruction permet de charger une adresse de 2 octets dans la partie haute d'un registre de 4 octets.
Remarques
- LH permet de charger un demi-mot signé (16 bits) en mémoire dans un registre de 32 bits. Elle effectue une extension de signe : le bit 15 est répliqué sur les 16 bits
de poids fort du registre. Cela permet de conserver correctement le signe de la valeur.
- Le registre R1 reçoit la valeur étendue : les 16 bits de poids faible contiennent le demi-mot d'origine. Les 16 bits de poids fort sont remplis selon le bit de signe,
pour garantir une représentation correcte. Cette opération est essentielle dans les calculs arithmétiques avec des entiers signés courts.
- L'adresse de lecture est calculée avec trois éléments : D2, X2 (facultatif), et B2. Cela permet une grande flexibilité dans l'adressage, incluant indexation et base
dynamique. C'est utile dans les tableaux ou structures de données où l'accès est relatif.
- L'instruction LH lit uniquement 2 octets en mémoire, ce qui la rend plus rapide que les chargements de mots complets. Elle est adaptée pour des structures de données
compactes ou des types réduits. Elle économise la mémoire tout en restant compatible avec le registre de 32 bits.
- Si le demi-mot en mémoire représente une valeur négative (bit 15 = 1), LH l'interprète correctement. Cette fonctionnalité est cruciale pour travailler avec des entiers
négatifs codés sur 16 bits. Sans extension de signe, les opérations ultérieures donneraient des résultats erronés.
- LH ne modifie que le registre de destination, sans affecter le reste du système. Elle ne modifie pas la mémoire source, ni d'autres registres. Cela en fait une
instruction sûre pour des lectures isolées.
- Cette instruction est souvent utilisée dans les accès à des fichiers binaires, des tampons ou des structures C, où les entiers
de 16 bits sont fréquents. Elle facilite l'interopérabilité entre architectures et langages de plus haut niveau.
- Il est important de ne pas confondre LH avec L, qui charge un mot complet (4 octets). LH ne prend que 2 octets, ce qui implique de bien positionner les données en
mémoire. Des erreurs d'alignement ou de type peuvent sinon provoquer des incohérences.
Dernière mise à jour : Mardi, le 22 août 2017