TP : Adressage, mémoire, exécution programme
I. Introduction
Ouvrir une fenêtre de commande DOS, exécuter le programme "Debug" exemple
:
C:\...........> debug
Pour consulter l'aide taper "?", puis appuyer sur entrée
Les commandes :
• a: permet l'écriture d'un programme en assembleur
• p: l'exécution pas à pas de ce programme
1. Quel est le rôle des commandes e et d ? Donner un exemple d'utilisation pour
les deux commandes.
2. Comment est organisée la memoire centrale ?
Aide TP
Les microprocesseurs 80x86 possèdent un ensemble de registres internes (16 bits) :
exemple les registres ax, bx, cx, dx, etc
MOV est une instruction assembleur utilisée pour le transfert des données entre
registres ou entre mémoire et registres :
Mov dest , source
Exemple : mov ax,bx charger le contenu de registre ax par le contenu de
registre bx
mov [@1], ax charger le contenu de l’adresse @1 par le contenu de
registre al
Manipulation de registre
Pour écrire un programme en assembleur taper la commande a, valider par
entrée puis commencer à écrire.
On donne un programme qui illustre l’adressage immédiat :
mov ax , 123A
add ax, 2
Pour l’exécution pas à pas d’un programme utilisez la commande P=100 (100 est
l’adresse de début du programme à exécuter)
II. L’ordre big endian et little endian
Soit N = Byte3 Byte2 Byte1 Byte0, N est un nombre codé sur 32 bits.
Arrangement dans la mémoire :
Little Endian : Big Endian :
Base Address+0 Byte0 Base Address+0 Byte3
Base Address+1 Byte1 Base Address+1 Byte2
Base Address+2 Byte2 Base Address+2 Byte1
Base Address+3 Byte3 Base Address+3 Byte0
1
Écrire en mode assembleur (commande a) les instructions suivantes :
Mov ax, 1234 ;dans ce cas N est codé sur 16 bits est égal à 1234H
Mov [200], ax
Vérifier le changement effectué sur les adresses 200 et 201, qu’est ce que vous
remarquez, qu’elle est donc l’ordre utilisé dans les machines PC ?
III. Mémoire données et mémoire programme et le registre IP (Instruction pointer)
Le registre IP (nommé aussi compteur ordinal ou compteur de programme) est
toujours un pointeur sur la prochaine instruction à exécuter par le microprocesseur.
Soit le programme suivant :
Mov ax,0
Mov cx,[0500]; cx donne le nombre d’itération de boucle
Add ax,cx
Loop 0107
Mov [502],ax
1. Remplir la case mémoire d’adresse 0500 par 03 utiliser la commande e (E
address [list])
2. Ecrire ce programme à l’adresse 100.
3. Effectuer l’exécution pas à pas de ce programme. Q’est ce qu’il fait ce
programme ?
4. Durant l’exécution de ce programme, comment se fait le changement du
contenu du registre IP ?
5. Est ce que le contenu de registre IP change durant l’exécution d’une
instruction ?