Retour à l'accueil Contact : etienne"point"sauvage"at"gmail.com Retour à la liste des instructions.

BT

Bit Test


Bit : Test

Copie un bit, défini par un index de bit dans un registre ou une valeur immédiate sur 8 bits (second opérande), à partir d'une chaîne de bits (premier opérande), aussi nommée la base de bits, vers le drapeau de retenue (CF) ou le registre rFLAGS.

Si l'opérande de la base de bits est un registre, l'instruction utilise le modulo 16, 32 ou 64 (en fonction de la taille de l'opérande) de l'index de bit pour sélectionner un bit dans le registre.

Si l'opérande de la base de bit est un emplacement mémoire, le bit 0 de l'octet à l'adresse spécifiée est le bit de base de la chaîne de bits. Si l'index de bit est un registre, l'instruction sélectionne une position de bit relative au bit de base dans l'intervalle de -263 à +263 - 1 si la taille de l'opérande est 64, de -231 à +231 - 1 si la taille de l'opérande est 32, et de -215 à +215 - 1 si la taille de l'opérande est 16. Si l'index de bit est une valeur immédiate, le bit sélectionné est cette valeur modulo 16, 32 ou 64 en fonction de la taille de l'opérande.

Quand l'instruction essaie de copier un bit à partir de la mémoire, elle accède à 2, 4 ou 8 octets à partir de l'adresse mémoire spécifiée pour des tailles d'opérande de 16, 32 ou 64 bits, respectivement, en utilisant cette formule :.

Adresse Effective + (NumOctetsi * (OffsetDuBit DIV NumBitsi*8))

Quand on utilise ce mécanisme d'adressage de bits, il faut éviter de référencer des zones de mémoire proches des trous de l'espace d'adressage, comme les références aux registres d'E/S mappés en mémoire. Au lieu de cela, utilisez une instruction MOV pour charger un registre à partir d'une telle adresse et utilisez la forme à registre de l'instruction BT pour manipuler les données.

MnémoniqueOpcodeDescription
BT reg/mem16, reg160F A3 /rCopie la valeur du bit sélectionné dans l'indicateur de retenue.
BT reg/mem32, reg320F A3 /rCopie la valeur du bit sélectionné dans l'indicateur de retenue.
BT reg/mem64, reg640F A3 /rCopie la valeur du bit sélectionné dans l'indicateur de retenue.
BT reg/mem16, imm80F BA /4 ibCopie la valeur du bit sélectionné dans l'indicateur de retenue.
BT reg/mem32, imm80F BA /4 ibCopie la valeur du bit sélectionné dans l'indicateur de retenue.
BT reg/mem64, imm80F BA /4 ibCopie la valeur du bit sélectionné dans l'indicateur de retenue.

Instructions apparentées

BTC, BTR, BTS

rFLAGS affectés

IDVIPVIFACVMRFNTIOPLOFDFIFTFSFZFAFPFCF
UUUUUM
2120191817161413-1211109876420
Note : les bits 31-22, 15, 5, 3 et 1 sont réservés. Un drapeau mis à 1 ou nettoyé à 0 est M (modifié). Les drapeaux non affectés sont blancs. Les drapeaux non définis sont U.

Exceptions

ExceptionRéel8086
virtuel
ProtégéCause de l'exception
Pile, #SSXXXUne adresse mémoire a dépassé la limite du segment de pile ou était non canonique.
Protection générale, #GPXXX
Une adresse mémoire a dépassé la limite d'un segment de données ou était non canonique.
X
Un segment de données NULL a été utilisé pour référencer la mémoire.
Faute de page, #PFXXUne faute de page a résulté de l'exécution de l'instruction.
Vérification d'alignement, #ACXXUne référence mémoire non alignée a été faite pendant que la vérification d'alignement était active.

Source : AMD x86-64 Architecture PROGRAMMER'S MANUAL Volume 3 General-Purpose and System Instructions, 24594 Rev. 3.02 August 2002.

Retour à l'accueil Contact : etienne"point"sauvage"at"gmail.com Retour à la liste des instructions