0% ont trouvé ce document utile (0 vote)
21 vues3 pages

TD TP2

Transféré par

astameryam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues3 pages

TD TP2

Transféré par

astameryam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

INPT ANNEE 2025-2026

INE1 - Filière ASEDS

TD/TP N°2
PROCESSEURS

Assembleur ARM
Objectifs

Ce travail pratique vise les objectifs suivants :

Comprendre comment effectuer les sauts de programme d'une partie de la mémoire à une autre ;
Aussi comment expérimenter avec l'appel de fonctions en assembleur ARM ; Implémenter des
algorithmes simples en assembleur ARM ; Comprendre comment fonctionnent les branchements en
assembleur ARM.

Dans cette étape, vous aurez à implémenter 3 fonctions : EchangeRegistres, EstPair et


CopieMemoire.

Fonction EchangeRegistres

La fonction EchangeRegistre échange le contenu des registres R0 et R1. Elle doit le faire sans
modifier le contenu des autres registres. Le code suivant (disponible dans le code fourni) vous
permettra de tester le fonctionnement de votre fonction :
MOV R0, #5
MOV R1, #10
BL EchangeRegistres
ASSERT R0=10,R1=5
Après l'exécution de l'instruction BL EchangeRegistres, R0 devrait contenir 10 et R1 devrait contenir
5. Si ça n'est pas le cas, vous observerez une erreur sur le ASSERT.

Fonction EstPair

La fonction EstPair détermine si le nombre placé dans R0 est pair ou non. S'il est pair, elle place 1
dans le registre R2. S'il est impair, elle place 0 dans le registre R2. Comme pour la fonction
EchangeRegistre, le code fourni contient du code pour vous permettre de tester votre fonction
EstPair.
; Test #1 de la fonction EstPair
MOV R0, #5
BL EstPair
ASSERT R2=0
; Test #2 de la fonction EstPair
MOV R0, #10
BL EstPair
ASSERT R2=1
INPT ANNEE 2025-2026

Fonction CopieMemoire

La fonction CopieMemoire doit copier une partie de la mémoire vers un autre emplacement. Cette
opération est analogue à celle que fait votre ordinateur au démarrage, lorsqu'il copie d'abord une
partie du système d'exploitation dans la RAM depuis votre disque dur, avant de laisser le contrôle au
système en faisant un branchement vers les instructions fraichement copiées.

La fonction CopieMemoire reçoit les paramètres suivants :

R0: Adresse du premier mot de 32 bits à copier.

R1: Adresse du dernier mot de 32 bits à copier.

R2: Adresse de destination.

Votre fonction doit fonctionner correctement si l'adresse du dernier mot est plus petite que celle du
premier mot. Dans ce cas, aucun mot ne devrait être copié. De même, si l'adresse du dernier mot est
la même que celle du premier mot, un seul mot devrait être copié. Testez ces cas vous-mêmes pour
vous assurer que votre fonction respecte bien ces critères !

Votre code doit contenir au moins un commentaire toutes les trois lignes de code assembleur, qui
décrit le fonctionnement de votre programme.

Important: votre fonction CopieMemoire ne doit pas modifier le contenu des registres. Cela inclut
R0, R1, et R2, qui sont utilisés pour passer des arguments à la fonction, et tout autre registre que
vous déciderez d’utiliser. Indice : vous disposez d’une pile de 32 octets, elle pourrait vous être fort
utile !

LDR R0, =varTestCopieMemoire


ADD R1, R0, #0x8
LDR R2, =espaceTestCopieMemoire
BL CopieMemoire
ASSERT 0x1010=0x67,0x1011=0x45,0x1012=0x23,0x1013=0x01
ASSERT 0x1014=0xAB,0x1015=0x89,0x1016=0x67,0x1017=0x45
ASSERT 0x1018=0xBC,0x1019=0x9A,0x101A=0x78,0x101B=0x56
ASSERT 0x101C=0x00,0x101D=0x00,0x101E=0x00,0x101F=0x00

Structure du programme du TP :
SECTION INTVEC
B main

SECTION CODE
main
; Préparons une pile
INPT ANNEE 2025-2026

LDR SP, =maPile


ADD SP, SP, #32
fin
B fin

SECTION DATA
maPile ALLOC32 8
varTestCopieMemoire ASSIGN32 0x01234567, 0x456789AB, 0x56789ABC
espaceTestCopieMemoire ALLOC32 3

Vous aimerez peut-être aussi