Telechargé par bouaissaymen

examplaire tp assembly language

publicité
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
Etat
Résultat step par step :
Segements registres
DS
CS
SS
ES
Générales registres
AX
BX
CX
DX
Pointers registres
BP
DI
SI
SP
IP
Etat 0050 0050 0000 0050 0000 0000 0000 0000 0000 0000 0000 0500 0100
initial
0050 0050 0000 0050 00FF 0000 0000 0000 0000 0000 0000 0500 0103
1
2
0050 0050 0000 0050 0100 0000 0000 0000 0000 0000 0000 0500 0104
3
0050 0050 0000 0050 0100 0000 0000 0000 0000 0000 0000 0500 0103
4
0050 0050 0000 0050 0101 0000 0000 0000 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
l’adresse [0220]
Opération logique XOR entre AX et
F
Incrumanté AX par 1
XOR AX,F
INC AX
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
DS
CS
SS
ES
Générales registres
AX
BX
CX
DX
Pointers registres
BP
DI
SI
SP
IP
Etat 0050 0050 0000 0050 0000 0000 0000 0000 0000 0000 0000 0500 0100
initial
0050 0050 0000 0050 F054 0000 0000 0000 0000 0000 0000 0500 0103
1
2
0050 0050 0000 0050 F05B 0000 0000 0000 0000 0000 0000 0500 0106
3
0050 0050 0000 0050 F05C 0000 0000 0000 0000 0000 0000 0500 0107
2.2. transfert de donnée
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
Charger SI(registre d’index source) par la valeur
0100
Charger DI(registre d’index destination) par la
valeur 0300
Repeter la transfert des bytes de CX a SI et DI
jusq’ou CX=0000 en parallele SI=10A et DI=30A
MOV SI,0100
MOV DI,0300
REPZ MOV SB
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
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

l’instruction REPZ MOV SB peut etre divisée en deux partie
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

l’instruction 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) utilisé pour rechercher un charactere
particulier
Téléchargement