Q8.7 : Quelle instruction permet d’inverser le signe d’un nombre ? Donnez une
combinaison de deux instructions ayant 1 seule opérande conduisant au même résultat.
NEG
NOT + INC
Q8.8 : Pourquoi le registre DX peut-il être changer par l’instruction MUL ?
Parce que la multiplication de deux nombres sur 16 bits donne un nombre sur 32 bits. Il faut deux registres pour
contenir le résultat de la multiplication : AX et DX.
Q8.9 : À quoi servent les instructions TEST et CMP ?
Changer les drapeaux afin de faire un « if » sans modifier de variables.
Q8.10 : L’instruction MOV change-t-elle les drapeaux de l’ALU ?
Non
Q8.11 : Pourquoi l’instruction MOV ne supporte pas d’avoir deux fois la mémoire comme
opérandes ?
Le 8086 n’est pas capable d’accéder une fois de plus à la mémoire à l’intérieur d’un seul cycle d’instruction.
Créer une instruction MOV mémoire, mémoire ferait une instruction complexe, longue à exécuter par rapport
aux autres (dans un pipeline, il y a intérêt à avoir des instructions de même longueur) et le gain par rapport à
MOV registre, mémoire puis MOV mémoire, registre est faible.
Q8.12 : Quelle directive assembleur permet de déclarer des tableaux ?
DB
Q8.13 : Le code suivant, un .COM en assembleur 8086, a des questions en commentaire.
Répondez aux questions en les remplaçant par leur réponse, en commentaire dans le code.
C’est la réponse au laboratoire 2!!!
Q8.14 : Vous voulez effectuer l’opération a = b + c + d. Sachant que a, b, c et d sont des
variables déclarées avec DW, donnez une séquence d’instructions permettant de faire cette
addition.
MOV AX, b
ADD AX, c
ADD AX, d
MOV a, AX
Q8.15 : Dans la table suivante, dites si les opérations A sont équivalentes aux opérations B
pour toutes les lignes de la table. Si les opétions ne sont pas équivalentes, décrivez
brièvement pourquoi :
Opérations A Opérations B Équivalentes?
MOV AH, 06
MOV AL, 05
MOV AX, 0506 Non, le 8086 est little endian
MOV BX,100h
MOV AX,[BX+2]
MOV BX,100h
MOV AX, [102h]
Oui
ADD AX, BX
ADD AX, CX
ADD BX, AX
ADD CX, BX
Non, BX = BX + AX et CX = CX
+ BX n’est pas égal à AX = AX +
BX, suivit de AX = AX + CX…
MOV BX, 100h
MOV AH, [BX]
MOV AL, [BX+1]
MOV BX, 100h
MOV AX, [BX]
Non, le 8086 est little endian