Système d’exploitation : Assembleur

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

description

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 - PowerPoint PPT Presentation

Transcript of Système d’exploitation : Assembleur

Page 1: Système d’exploitation : Assembleur

Système d’exploitation : Assembleur

Semaine 10Instructions logiques

Page 2: Système d’exploitation : Assembleur

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 AND0 AND 0 = 00 AND 1 = 01 AND 0 = 01 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 à 0SF, ZF et PF sont positionnés

Page 3: Système d’exploitation : Assembleur

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 faibleAND 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 BCDExemple : ascii : 33h 34h 37h 38h

masque : 0F 0F 0F 0Frésultat : 03 04 07 08

Page 4: Système d’exploitation : Assembleur

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 OR0 OR 0 = 00 OR 1 = 11 OR 0 = 11 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 à 0SF, ZF et PF sont positionnés

Page 5: Système d’exploitation : Assembleur

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 minusculeExemple :

texte : 41 53 53 45 4D 42 4C 45 52 (ASSEMBLER)masque : 20 20 20 20 20 20 20 20 20résultat : 61 73 73 65 6D 62 6C 65 72 (assembler)

Page 6: Système d’exploitation : Assembleur

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 XOR0 XOR 0 = 00 XOR 1 = 11 XOR 0 = 11 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 à 0SF, ZF et PF sont positionnés

Page 7: Système d’exploitation : Assembleur

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 à 0Exemple :

XOR AX, AX ; remet AX à 0XOR 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 20 20 20 20 20 20 20 20résultat : 61 73 53 65 4D 42 4C 65 52 (asSeMBLeR)

Page 8: Système d’exploitation : Assembleur

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 NOTNOT 0 = 1NOT 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

Page 9: Système d’exploitation : Assembleur

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

Page 10: Système d’exploitation : Assembleur

Instructions de décalage et de rotation

• 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

Les 4 SHIFTSSHL, SHR, SAL, SAR

Les 4 RotationsROL, ROR, RCL, RCR

Page 11: Système d’exploitation : Assembleur

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

Page 12: Système d’exploitation : Assembleur

• 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 (1/2)

reg/mem0

CFperdu

reg/mem0 perdu

CF

reg/mem

Signe réinjectéperdu

CF

Page 13: Système d’exploitation : Assembleur

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.

Page 14: Système d’exploitation : Assembleur

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

reg/memCFperdu

reg/memperdu

CF

reg/memCF

reg/mem CF

Page 15: Système d’exploitation : Assembleur

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.

Page 16: Système d’exploitation : Assembleur

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– SHx pour nombres non-signés