Fin séance CHTI ASM 3

This commit is contained in:
Damien Caseau 2023-04-12 15:14:01 +02:00
parent 4550b7bcf7
commit 6c2fdcf46f
2 changed files with 31 additions and 23 deletions

View file

@ -1,6 +1,7 @@
PRESERVE8
THUMB
IMPORT Son
IMPORT LongueurSon
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
@ -13,13 +14,12 @@
FlagSon dcb 0
EXPORT FlagSon
SortieSon dcw 0
SortieSon dcd 0
EXPORT SortieSon
Index dcw 0
EXPORT Index
;LDRD{cond} Rt, Rt2, [Rn, ±Rm] ; register offset, doubleword ; ARM only <-- INSTRUCTION A UTILISER
; ===============================================================================================
;Exportation de la fonction callbackson()
@ -32,30 +32,42 @@ Index dcw 0
; écrire le code ici
callbackson proc
push{lr}
ldr r1, =FlagSon ; on affecte à r1 l'adresse de FlagSon (r1 = pointeur sur FlagSon)
ldr r2, [r1] ; on affecte à r2 la valeur contenu dans r1
push{r4}
ldr r0, =SortieSon ; r0 = adresse de SortieSon
ldr r1, [r0] ; r1 = valeur de SortieSon
ldr r2, =Index ; r2 = adresse de Index
ldr r3, [r2] ; r3 = valeur de Index
SI
cmp r2, #0 ; si Flag = 0
bne SINON
ldr r0, =LongueurSon
ldr r4, [r0] ; r4 = LongueurSon
cmp r3, r4
bgt FINSI
ALORS
ldr r2, =Son
;Calcul de SortieSon
ldrsh r1, [r2,r3,lsl #1]
add r1, #32768
mov r2,#719
mul r1,r2
asr r1, #16
;MAJ de SortieSon
ldr r0, =SortieSon
strh r1, [r0]
;incrémente Index
add r3, #1
ldr r2, =Index
str r3, [r2]
ALORS ; on passe Flag à 1 + on allume B1
mov r2, #1
b FINSI
SINON ; sinon on passe Flag à 0 + on éteint B1
mov r2, #0
FINSI
ldr r1, =FlagSon
str r2, [r1] ; on stocke la nouvelle valeur de r2 dans r1 (on met à jour FlagSon)
pop{r4}
pop {PC}
endp
END

View file

@ -1,9 +1,5 @@
#include "DriverJeuLaser.h"
int main(void)
{