1 / 16

Système d’exploitation : Assembleur

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

glen
Download Presentation

Système d’exploitation : Assembleur

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Système d’exploitation : Assembleur Semaine 10 Instructions logiques

  2. 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

  3. 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

  4. 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

  5. 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)

  6. 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

  7. 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)

  8. 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

  9. 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

  10. 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

  11. Instructions de décalage et de rotation Utilité • Lire un à un les bits du registreles bits sortant à gauche positionnent l'indicateur de retenue CF • Multiplier par 2nle 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.

  12. 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

  13. 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.

  14. 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

  15. 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.

  16. 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

More Related