PRESERVE8 THUMB ; ====================== zone de réservation de données, ====================================== ;Section RAM (read only) : area mesdata,data,readonly ;Section RAM (read write): area maram,data,readwrite SortieSon dcw 0 Index dcd 0x00000000 ; =============================================================================================== EXPORT CallbackSon EXPORT SortieSon EXTERN Son EXTERN LongueurSon ;Section ROM code (read only) : area moncode,code,readonly ; écrire le code ici CallbackSon proc push {lr} ldr r0, =SortieSon ldr r1, =Son ldr r2, =Index ldr r3, =LongueurSon push {r4} push {r5} push {r6} push {r7} push {r8} ldr r4, [r2] ;on stocke la valeur de l'index dans r2. ldr r5, [r1, r4] ;on stocke la valeur de Son[index] dans r5; ldr r6, [r0] ; on stocke la valeur de SortieSon dans r6 mov r7, #360 mov r8, #32768 mul r5, r7 sdiv r5, r8 adds r5, #360 str r5, [r0] ; on stocke la valeur calculee dans r0 adds r4, #1; on incremente r4 qui correspond à la valeur de l'index ldr r2, [r4]; on stocke la nouvelle valeur de l'index à l'adresse de l'index pop {r6} pop {r5} pop {r4} pop {pc} ENDFUNC END