Retour à l'accueil | Contact : etienne"point"sauvage"at"gmail.com | Retour à la liste des instructions. |
BTR | Bit Test and ResetBit : 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émonique | Opcode | Description |
BTR reg/mem16, reg16 | 0F B3 /r | Copie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné. |
BTR reg/mem32, reg32 | 0F B3 /r | Copie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné. |
BTR reg/mem64, reg64 | 0F B3 /r | Copie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné. |
BTR reg/mem16, imm8 | 0F BA /6 ib | Copie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné. |
BTR reg/mem32, imm8 | 0F BA /6 ib | Copie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné. |
BTR reg/mem64, imm8 | 0F BA /6 ib | Copie la valeur du bit sélectionné dans l'indicateur de retenue, puis nettoie le bit sélectionné. |
BT, BTC, BTS
ID | VIP | VIF | AC | VM | RF | NT | IOPL | OF | DF | IF | TF | SF | ZF | AF | PF | CF |
U | U | U | U | U | M | |||||||||||
21 | 20 | 19 | 18 | 17 | 16 | 14 | 13-12 | 11 | 10 | 9 | 8 | 7 | 6 | 4 | 2 | 0 |
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. |
Exception | Réel | 8086 virtuel | Protégé | Cause de l'exception |
Pile, #SS | X | X | X | Une adresse mémoire a dépassé la limite du segment de pile ou était non canonique. |
Protection générale, #GP | X | X | X | 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, #PF | X | X | Une faute de page a résulté de l'exécution de l'instruction. | |
Vérification d'alignement, #AC | X | X | Une 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 |