TD5 2020 Correction
TD5 2020 Correction
TD5 2020 Correction
Exercice 1
AREA |.text|, CODE, READONLY ; création d’une zone dans la mémoire code
pour enregister
__main
MOV R3, R2
B fsi
Inst1
fsi
NOP
2019-2020
TD5 : Assembleur Cortex M4
END
Résultat dans R3
3) Réécrire le programme dans le cas ou x, y et MIN sont des variables stockées dans une
mémoire de type READWRITE (x, y et MIN sont des entiers codés sur 8 bits)
AREA donnees, DATA, READWRITE
x DCB 0x7
y DCB 0x9
MIN DCB 0x0
4) Quelles sont les modifications qui seront ajoutées si x et y sont codés sur 16 bits ? sur
32 bits ?
16 bits 32 bits
données DCW au lieu de DCB DCD au lieu de DCB
programme LDR R1,=x LDR R1,=x
.. ..
… …
2019-2020
TD5 : Assembleur Cortex M4
aa DCB ‘F’
bb DCB ‘y’
xx DCW 264
yy DCD 2387
2) La section text d’un programme qui remplace la valeur à l’adresse xx par la valeur
maximale qui peut y être stockée.
Exercice 3
2019-2020
TD5 : Assembleur Cortex M4
if (x < y) x = x + 1 ; else y = y + 3 ;
x DCD 0
y DCD 0
Méthode inconditionnelle
LDR R2, =x
LDR R3, =y
CMP R2,R3
BGE else
ADD R2,R2,#1
B suite
else
ADD R3,R3,#3
suite
Méthode conditionnelle :
LDR R2, =x
2019-2020
TD5 : Assembleur Cortex M4
LDR R3, =y
CMP R2, R3
ADDLS R2 , R2,#1
Exercice 4
Soit la fonction Somme permettant de retourner la somme d’un tableau de N entiers signés sur
8 bits.
1) Ecrire un programme assembleur ARM qui implémente cette fonction
tab space 100 ; initialiser 100 cases à 0 pointée par l’étiquette tab
2019-2020
TD5 : Assembleur Cortex M4
result DCD 0
LDR R0,=tab
LDR R1,=100
LDR R2,=0
; on va remplir le tableau
loop
ADD R2,R2,#1
CMP R1, R2
BNE loop
LDR R0,=tab
; appeler Somme
BL Somme
2019-2020