160 likes | 336 Views
Système d’exploitation : Assembleur. Semaine 10 Instructions logiques. Instruction logique : AND. AND effectue un ET LOGIQUE bit par bit sur les opérandes source et destination. Le résultat est placé dans l’opérande destination. Table de vérité de AND 0 AND 0 = 0 0 AND 1 = 0 1 AND 0 = 0
E N D
Système d’exploitation : Assembleur Semaine 10 Instructions logiques
Instruction logique : AND • AND effectue un ET LOGIQUE bit par bit sur les opérandes source et destination.Le résultat est placé dans l’opérande destination. • Table de vérité de AND 0 AND 0 = 0 0 AND 1 = 0 1 AND 0 = 0 1 AND 1 = 1 • Utilisations possibles : • AND reg(8 ou 16), reg(8 ou 16) • AND reg(8 ou 16), mem(8 ou 16) • AND mem(8 ou 16), reg(8 ou 16) • AND reg(8 ou 16), imm(8) • AND reg(16), imm(16) • AND mem(8 ou 16), imm(8) • AND mem(16), imm(16) • Positionnement des indicateurs : OF et CF sont mis à 0 SF, ZF et PF sont positionnés
Instruction logique : ANDUtilité • AND sert à forcer des bits à 0 à l’aide d’un masque (mettre des 0 en regard des bits à forcer à 0 et des 1 en regard des bits à laisser inchangés) AX = CDEFh isoler les 12 bits de poids faible AND AX, 0000 1111 1111 1111b (c à d 0FFFh) résultat : AX = 0DEFh • AND permet de calculer le reste d’une division d’un nb par un autre ce dernier étant une puissance de 2. • 1ère opérande du AND = le numérateur • 2ème opérande du AND = le dénominateur – 1 Exemple : reste de 134/16 : 1000 0110b AND 0000 1111b = 0000 0110b = 6d • AND permet de transformer un nb ascii en BCD Exemple : ascii : 33h 34h 37h 38h masque : 0F 0F0F0F résultat : 03 04 07 08
Instruction logique : OR • OR effectue un OU LOGIQUE bit par bit sur les opérandes source et destination.Le résultat est placé dans l’opérande destination. • Table de vérité de OR 0 OR 0 = 0 0 OR 1 = 1 1 OR 0 = 1 1 OR 1 = 1 • Utilisations possibles : • OR reg(8 ou 16), reg(8 ou 16) • OR reg(8 ou 16), mem(8 ou 16) • OR mem(8 ou 16), reg(8 ou 16) • OR reg(8 ou 16), imm(8) • OR reg(16), imm(16) • OR mem(8 ou 16), imm(8) • OR mem(16), imm(16) • Positionnement des indicateurs : OF et CF sont mis à 0 SF, ZF et PF sont positionnés
Instruction logique : ORUtilité • OR sert à forcer des bits à 1 à l’aide d’un masque (mettre des 1 en regard des bits à forcer à 1 et des 0 en regard des bits à laisser inchangés) • AX = CDEFh - forcer à 1 les 12 bits de poids faible • OR AX, 0000 1111 1111 1111b c.àd 0FFFh • résultat : AX = CFFFh • OR permet de transformer des majuscules en minuscule Exemple : texte : 41 53 53 45 4D 42 4C 45 52 (ASSEMBLER) masque : 20 2020202020202020 résultat : 61 73 73 65 6D 62 6C 65 72 (assembler)
Instruction logique : XOR • XOR effectue un OU LOGIQUE (exclusif) bit par bit sur les opérandes source et destination. Le résultat est placé dans l’opérande destination. • Table de vérité de XOR 0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0 • Utilisations possibles : • XOR reg(8 ou 16), reg(8 ou 16) • XOR reg(8 ou 16), mem(8 ou 16) • XOR mem(8 ou 16), reg(8 ou 16) • XOR reg(8 ou 16), imm(8) • XOR reg(16), imm(16) • XOR mem(8 ou 16), imm(8) • XOR mem(16), imm(16) • Positionnement des indicateurs : OF et CF sont mis à 0 SF, ZF et PF sont positionnés
Instruction logique : XOR Utilité • XOR sert à inverser des bits à l’aide d’un masque (mettre des 1 en regard des bits à inverser et des 0 en regard des bits à laisser inchangés) • AX = CDEFh - inverser les 12 bits de poids faible • XOR AX, 0000 1111 1111 1111b càd 0FFFh • résultat : AX = C210h • XOR est un moyen rapide pour remettre un registre à 0 Exemple : XOR AX, AX ; remet AX à 0 XOR BH, BH ; remet BH à 0 • XOR permet de transformer les majuscules en minuscules et les minuscules en majuscules. Exemple : texte : 41 53 73 45 6D 62 6C 45 72 (ASsEmblEr) masque : 20 2020202020202020 résultat : 61 73 53 65 4D 42 4C 65 52 (asSeMBLeR)
Instruction logique : NOT • NOT effectue un NON LOGIQUE bit par bit sur l’opérande spécifiée.Le résultat est placé dans l’opérande spécifiée. • Table de vérité de NOT NOT 0 = 1 NOT 1 = 0 • Utilisations possibles : • NOT reg • NOT mem • Positionnement des indicateurs : les indicateurs ne sont pas positionnés par NOT (attention, c’est l’exception !) • Utilité : NOT sert à inverser tous les bits de l’opérande destination (équivalent à XOR utilisant un masque ne comportant que des “1”) Exemple : NOT AX avec AX=C4 62 donne AX=3B 9D
Instruction logique : TEST • TEST effectue un ET LOGIQUE bit par bit sur les opérandes spécifiées. • Les opérandes ne sont pas modifiées par l’opération. Seuls les indicateurs sont positionnés suite à une instruction TEST. • Utilisations possibles : • TEST reg(8 ou 16), reg(8 ou 16) • TEST reg(8 ou 16), mem(8 ou 16) • TEST mem(8 ou 16), reg(8 ou 16) • TEST reg(8 ou 16), imm(8) • TEST reg(16), imm(16) • TEST mem(8 ou 16), imm(8) • TEST mem(16), imm(16) • Positionnement des indicateurs : idem AND (OF et CF sont mis à 0; SF, ZF et PF sont positionnés) • Exemples : TEST AX, 0000 0010b avec AX = 10101101 donne ZF=1
Instructions de décalage et de rotation • Les 4 SHIFTS • SHL, SHR, SAL, SAR • Les 4 Rotations • ROL, ROR, RCL, RCR • Principe : consiste à faire glisser tous les bits d’un octet ou d’un mot vers la droite ou vers la gauche. • 2 catégories : les SHIFTS et les ROTATIONS
Instructions de décalage et de rotation Utilité • Lire un à un les bits du registreles bits sortant à gauche positionnent l'indicateur de retenue CF • Multiplier par 2nle fait de décaler un nombre binaire d'un chiffre à gauche le multiplie par 2; en effectuant cette opération n fois on obtient une multiplication par 2n.
CF reg/mem perdu 0 reg/mem CF 0 perdu reg/mem CF perdu Signe réinjecté Les instructions de décalage (1/2) • Utilisations possibles : • SHL/SHR/SAL/SAR reg(8 ou 16), 1 • SHL/SHR/SAL/SAR mem(8 ou 16), 1 • SHL/SHR/SAL/SAR reg(8 ou 16), CL • SHL/SHR/SAL/SAR mem(8 ou 16), CL • SHL et SHR permettent de multiplier par 2n des entiers naturels (pas des entiers relatifs car le bit de poids fort disparait dès la première rotation). • Fonctionnement • SHL ou SAL (instructions identiques) • SHR • SAR
Les instructions de décalage (2/2) • Positionnement des indicateurs • OF, SF, ZF, PF, AF et CF sont positionnés • OF n’a de signification que pour un shift de 1 bit • OF et AF modifiés uniquement si shift à gauche • OF mis à 0 si CF identique au bit de signe et mis à 1 dans le cas contraire • Indicateurs non positionnés si shift de 0 position.
CF reg/mem perdu reg/mem CF perdu CF reg/mem reg/mem CF Les instructions de rotation (1/3) • Utilisations possibles : • ROL/ROR/RCL/RCR reg(8 ou 16), 1 • ROL/ROR/RCL/RCR mem(8 ou 16), 1 • ROL/ROR/RCL/RCR reg(8 ou 16), CL • ROL/ROR/RCL/RCR mem(8 ou 16), CL • RCL et RCR permettent de faire une lecture bit-à-bit du contenu du registre. • Fonctionnement • ROL • ROR • RCL • RCR
Les instructions de rotation (2/3) • Positionnement des indicateurs • OF et CF sont positionnés • Les autres indicateurs sont inchangés. • OF n’a de signification que pour une rotation de 1 bit. • OF et CF sont modifiés quel que soit le sens de rotation. • Rotations à gauche : OF mis à 0 si CF identique au bit de signe et mis à 1 dans le cas contraire • Rotations à droite : OF mis à 0 si le bit rentré à gauche est identique au bit de signe et mis à 1 dans le cas contraire • Indicateurs non positionnés si rotation de 0 position.
Les instructions de rotation (3/3) • Utilisation courante : • les shift et les rotations peuvent remplacer avantageusement les instructions de multiplication et de division. • Shift vers la gauche = multiplication par 2 • Shift vers la droite = division par 2 • SAx pour nombres signés • SHxpour nombres non-signés