NAME MAIN ; Nom du fichier/module; Addition sur 64 bits en little endian ; PUBLIC Additionne64Bits ; Rend l'étiquette/fonction Additionne64Bits disponible pour d'autres fichiers PUBLIC __iar_program_start SECTION .intvec : CODE (2) ; Le texte qui suit doit être assemblé dans la mémoire FLASH CODE32 ; Les instructions qui suivent sont sur 32 bits __iar_program_start B main SECTION .text : CODE (2) CODE32 main LDR R0, =Op1 ; Met l'adresse de Op1 dans R0 LDR R1, [R0] ; Met les 4 octets les moins significatifs d'Op1 dans R1 LDR R2, [R0,#4] ; Met les 4 octets les plus significatifs d'Op1 dans R2 LDR R0, =Op2 ; Met l'adresse de Op2 dans R0 LDR R3, [R0] ; Met les 4 octets les moins significatifs d'Op2 dans R3 LDR R4, [R0,#4] ; Met les 4 octets les plus significatifs d'Op2 dans R4 ADDS R5, R1,R3 ; R5 = R1+R3, additionne les octets les moins significatifs, met à jour Carry ADC R6, R2,R4 ; Additionne les octets les plus significatifs avec la retenue LDR R0, =Res ; Met l'adresse du résultat dans R0 STR R5, [R0] ; Sauvegarde le résultat: bit les moins significatifs STR R6, [R0,#4] ; Sauvegarde le résultat: bit les plus significatifs Fin B Fin ; Terminé DATA ; Le texte qui suit doit être assemblé dans la mémoire FLASH, constantes Op1 DC32 0x11111111, 0x22222222 ; Déclaration de l'opérande 1 sur 2 fois 32bits Op2 DC32 0x33333333, 0x44444444 ; Déclaration de l'opérande 2 sur 2 fois 32bits SECTION `.noinit`:DATA(2) ; Le texte qui suit doit être assemblé dans la mémoire RAM Res DS32 2 ; Déclaration du résultat sur 2 fois 32 bits END ; Fin du fichier/module