TD 2 ADOintro Corrigé - E-Eisti

ADOintro TD2 Corrigé. Architecture de VonNeumann. TD 2 ADOintro Corrigé.
Architecture de Von Neumann. Exercice 1 : Modes d'adressage. Les modes d' ...

Part of the document


TD 2 ADOintro Corrigé. Architecture de Von Neumann Exercice 1 : Modes d'adressage Les modes d'adressage
Un mode d'adressage est une méthode permettant d'interpréter, d'accéder à
un opérande (aux données) lors de l'exécution d'une instruction. Par
exemple l »assembleur MC68000 de Motorola présente 6 modes d'adressage :
1. Adressage Direct : l'opérande est un registre de données ou
d'adresse.
2. Adressage Indirect : l'opérande est désigné : - soit par le contenu d'un registre d'adresse, - soit par l'addition du contenu d'un registre
d'adresse et d'une constante (offset) et/ou du contenu d'un registre de donnée ou d'adresse
(index).
3. Adressage Immédiat : la donnée est fournie dans le code instruction.
4. Adressage Absolu : l'adresse de la donnée est fournie dans le
code instruction.
5. Adressage Relatif : l'adresse de la donnée est calculée par addition
du contenu du Compteur Ordinal et d'un offset et/ou
d'un index.
6. Adressage Implicite : les registres impliqués sont les registres de
contrôle (Registre d'Etat, Compteur Ordinal, Pile).
[pic]
[pic]
[pic]
[pic]
L'instruction ASSEMBLEUR INTEL 8086 : AND AX, 06 (AX est un registre accumulateur 16 bits) a pour code Machine : 25 06 00 H (convention INTEL Little Endian) Elle est implantée à l'adresse 01 00H.
a) Indiquer le contenu des registres IR et IP juste avant exécution de
l'instruction. b) Indiquer le contenu du registre IP juste après exécution de
l'instruction.
Corrigé :
a) Juste avant : IR : 25 06 00 IR contient le code Machine de la prochaine
instruction à exécuter IP : 01 00 01 00H = adresse d'implantation du programme =
contenu de IP, noté (IP) = adresse de la prochaine instruction à
exécuter
b) Juste après : IP : 01 03 01 00H + 3 octets = 01 03H (le code instruction
occupe 3 octets)
Exercice 2 : Programme ASSEMBLEUR (ASM) Soit l'extrait de programme ASSEMBLEUR INTEL 8086 suivant, stocké à
l'adresse 01 00H (via le code ASM ORG 100h) avec les valeurs initiales :
AX = 00 00H , BX = 00 00H et l'état de pile (STACK) suivant :
STACK : FF FEH : 00 00H FF FCH :
00 00H FF FAH :
00 00H ... | IP |Code |Commentaire |
|Code ASM |Machine |(AX) signifie : contenu de AX |
|01 00 |B8 00 01 |Ecrit 01 00H dans le registre AX ; (AX) = 01 00|
|MOV AX, 00100h |(3) |(convention INTEL Little Endian) |
|01 03 |BB 04 03 |Ecrit 03 04H dans le registre AX ; (AX) = 03 04|
|MOV BX, 00304h |(3) |(convention INTEL Little Endian) |
|01 06 Boucle : |04 01 |Ajoute 1 à l'octet de poids faible de AX noté |
|ADD AL, 01 |(2) |AL : (AL) = (AL) + 1 |
|01 08 |3C 02 |Compare (AL) à 2 ; place le bit de Flag Z à 1 |
|CMP AL, 02 |(2) |en cas d'égalité de la comparaison |
|01 0A |75 FA |Saut à l'étiquette Boucle si le bit Z = 0 (? |
|JNE Boucle |(2) |s'il n'y a pas égalité) (Jump Not Equal) |
|01 0C |50 |Empile le contenu de AX dans la pile (STACK) : |
|PUSH AX |(1) |(AX) > STACK |
|01 0D |53 |Empile le contenu de AX dans la pile (STACK) : |
|PUSH BX |(1) |(BX) > STACK | a) Compléter ce tableau lors de l'exécution complète et pas à pas du
programme, en indiquant le contenu des registres spécifiés : |Instruction |IP |AX |BX |Flag |SP |STACK |
|ASM | | | |Z | |(FFFF:FFFE:FFFD:FFFC:FFFB:FFFA) |
|Etat initial |01 00 |00 00 |00 00 |0 |FF FE| 00 00 00 |
| | | | | | |00 00 00 |
| MOV AX, |01 03 |01 00 |00 00 |0 |FF FE| 00 00 00 |
|00100h | | | | | |00 00 00 |
| MOV BX, |01 06 |01 00 |03 04 |0 |FF FE| 00 00 00 |
|00304h | | | | | |00 00 00 |
| ADD AL, |01 08 |01 01 |03 04 |0 |FF FE| 00 00 00 |
|01 | | | | | |00 00 00 |
| CMP AL, |01 0A |01 01 |03 04 |0 |FF FE| 00 00 00 |
|02 | | | | | |00 00 00 |
| JNE |01 06 |01 01 |03 04 |0 |FF FE| 00 00 00 |
|Boucle | | | | | |00 00 00 |
| ADD AL, |01 08 |01 02 |03 04 |0 |FF FE| 00 00 00 |
|01 | | | | | |00 00 00 |
| CMP AL, |01 0A |01 02 |03 04 |1 |FF FE| 00 00 00 |
|02 | | | | | |00 00 00 |
| JNE |01 0C |01 02 |03 04 |1 |FF FE| 00 00 00 |
|Boucle | | | | | |00 00 00 |
| PUSH AX |01 0D |01 02 |03 04 |1 |FF FC| 00 00 01 |
| | | | | | |02 00 00 |
| PUSH BX |01 0E |01 02 |03 04 |1 |FF FA| 00 00 01 |
| | | | | | |02 03 04 | TP 2 ADOintro. Architecture de Von Neumann b) Vérifier les résultats de la question précédente en assemblant (menu
emulate) le programme précédent avec le simulateur Assembler with
Microprocessor Simulator 8086 téléchargeable à l'adresse : http://pcwin.com/Software_Development/Debugging/Assembler_with_Microprocesso
r_Simulator_8086/index.htm (rubrique download) __________