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

BTR

Bit Test and Reset


Bit : Teste et Remet à zéro

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, puis nettoie à 0 le bit dans la chaîne de bits.

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.

Cette instruction est utile pour implanter des sémaphores dans des systèmes d'exploitation concurrents. Une telle application doit faire précéder cette instruction du préfixe LOCK. Pour plus d'information à propos du préfixe LOCK, consulter "LOCK Prefix" page 10.

MnémoniqueOpcodeDescription
BTR reg/mem16, reg160F B3 /rCopie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné.
BTR reg/mem32, reg320F B3 /rCopie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné.
BTR reg/mem64, reg640F B3 /rCopie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné.
BTR reg/mem16, imm80F BA /6 ibCopie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné.
BTR reg/mem32, imm80F BA /6 ibCopie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné.
BTR reg/mem64, imm80F BA /6 ibCopie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné.

Instructions apparentées

BT, BTC, 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
L'opérande de destination était dans un segment non inscriptible.
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