Veuillez consulter cette page à partir de l'interface principale.
version 2012-09-30

ESB : Extrait et étend le Signe d'un octet

Cette instruction sélectionne un des octets du registre source pour le mettre dans les bits de poids faible du registre destination. Les octets de poids fort sont la copie du bit de poids fort de l'octet choisi, afin d'étendre son signe. C'est en quelque sorte l'équivalent de SAR mais qui travaille sur des octets et non des bits.

Pour le YASEP16, l'opération sélectionne un octet parmi deux, alors que le YASEP32 sélectionne un octet parmi quatre, comme sur le diagramme suivant :

Cette instruction est typiquement utilisée lors du chargement d'un octet signé de la mémoire vers un registre, car elle effectue l'alignement et l'extension de signe en un seul cycle. La mémoire est cependant accédée au travers des registres, un mot à la fois et cette instruction ne fait qu'ajuster le mot obtenu.

Normalement, les octets viennent d'un registre D (qui contient une donnée venant de la mémoire), l'indice de l'octet à sélectionner est fourni par un registre A (l'adresse de la donnée lue) mais n'importe quel registre est utilisable. Il est aussi possible de fournir un indice directement avec une valeur immédiate (Imm4 ou Imm16), c'est pourquoi l'indice est écrit en premier dans l'instruction.

; charge l'octet situé à l'adresse 123h dans le registre R1 :
MOV 123h A1
ESB A1 D1 R1

• L'instruction EZB est similaire mais travaille avec des octets non signés, donc étend avec des zéros.

• L'instruction ESH est similaire mais travaille avec des demi-mots (16 bits) signés.