TP Assembleur 8086: Instructions MOV, INC, JMP, XOR

Telechargé par bouaissaymen
TP N°2
1. 1. Manipulation N° :1
Soit le programme suivant :
L’instruction
Description
MOV AX,FF
Charger AX par la valeur FF
INC AX
Incrumanter AX par 1
JMP FD
Sauter à l’adresse (0103)
On charge le registre AX par la valeur FF puis on incremente la valeur par 1 puis
on repete la tache en sautant a l’adresse instruction ayant l’adresse (0103)
Donc l’instruction JMP force le programme d’entrer a une LOOP qui incremente
chaque fois la valeur stocké dans AX
Résultat step par step :
Etat
Segements registres
nérales registres
Pointers registres
DS
CS
ES
AX
CX
BP
DI
SP
IP
Etat
initial
0050
0050
0050
0000
0000
0000
0000
0500
0100
1
0050
0050
0050
00FF
0000
0000
0000
0500
0103
2
0050
0050
0050
0100
0000
0000
0000
0500
0104
3
0050
0050
0050
0100
0000
0000
0000
0500
0103
4
0050
0050
0050
0101
0000
0000
0000
0500
0104
En mode Go user, le programme reste incrumenter 1 dans le registreAX sans arret
2. 2. Manipulation N° :2
2.1. Calcule :
Instruction
Description
MOV AX,[0220]
Charger AX par la valeur ayant
ladresse [0220]
XOR AX,F
Opération logique XOR entre AX et
F
INC AX
Incrumanté AX par 1
On commence par chargeant le registre AX par la valeur ayant ladresse 0220
quiétait F054, puis on utilise l’operation logique XOR entre F054 et puis on
incrumente AX par 1
Execution step par step :
Etat
Segements registres
nérales registres
Pointers registres
DS
CS
ES
AX
BX
CX
BP
DI
SP
IP
Etat
initial
0050
0050
0050
0000
0000
0000
0000
0000
0500
0100
1
0050
0050
0050
F054
0000
0000
0000
0000
0500
0103
2
0050
0050
0050
F05B
0000
0000
0000
0000
0500
0106
3
0050
0050
0050
F05C
0000
0000
0000
0000
0500
0107
2.2. transfert de donnée
Remarque et conclusion sur TP2
A1 2002 est le code operationel identifié par 8086, pour l’example qu’on a pris A1
est MOV en cas [registre,adresse] ..B8 est utilisé comme MOV en cas [registre,valeur]
XOR AX ,F000 comme mnemonique est ecrit 350F00 ou 35 est le codeOP de
XOR et 0F00 est le codeOP de F000 .. ici on peut remarquer l’inversion de High vers
Low et Low vers High
linstruction MOV CL,0A n’a pris que 2 cases memoire car on a chargé la valeur
0A(8bit) dans la partie Low de memoire
linstruction REPZ MOV SB peut etre divisée en deux partie
Instruction
Description
CLD
Mettre le drapeau de direction (DF) à 0
MOV AX,0000
Charge Ax par la valeur 0000
MOV DI,0100
Charger DI par la valeur 0100
MOV CX,000A
Charger CX par la valeur 000A
REPNE SCASB
Incrementer DI et decrementer CX jusqu’ou
cx=0006
Instruction
Description
MOV CL,0A
Charge les 8bit low de registre par 0Acharger la
valeur 0A dans la partie(LOW,CL) de la registre
CX
MOV SI,0100
Charger SI(registre d’index source) par la valeur
0100
MOV DI,0300
Charger DI(registre d’index destination) par la
valeur 0300
REPZ MOV SB
Repeter la transfert des bytes de CX a SI et DI
jusq’ou CX=0000 en parallele SI=10A et DI=30A
o REPZ(repeat if not equal zero)utilisé pour repeater une action
jusqu’ou la valeur initiale soit 0
o MOVESB(move data from string to string) est utilisé pour transfert
des donné de SI à DI
linstruction REPNE SCASB est compound de :
o REPNE(repeat if not equal )repeter si la resultat ne vaut pas la
valeur de la deuxieme operand
SCASB(scan string,byte comparaison) utilipour rechercher un charactere
particulier
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!