  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