/* -------------------------------------------------- Define required labels for EGTAPI -------------------------------------------------- */ .global main, Stop, CodeEnd .global DataStart, DataEnd .global a, b, c /* -------------------------------------------------- byte a = 4; short b = 5; int c = 256; c = a + b; -------------------------------------------------- */ .text main: // Move a into r1 movw r0, #:lower16:a // Moves the address of memory movt r0, #:upper16:a // variable a into register r0 ldrsb r1,[r0] // Move byte value from var into r1 // ldrsb also sign-extend to int !! // Move b into r2 movw r0, #:lower16:b // Moves the address of memory movt r0, #:upper16:b // variable b into register r0 ldrsh r2,[r0] // Move short value from var into r2 // ldrsb also sign-extend to int !! // Add them up add r2, r1, r2 // r2 = a + b // Move sum in r2 to c movw r0, #:lower16:c // Moves the address of memory movt r0, #:upper16:c // variable c into register r0 str r2,[r0] // Move sum in r2 to var c Stop: CodeEnd: nop /* -------------------------------------------------- Begin of the permanent program variables -------------------------------------------------- */ .data DataStart: a: .byte 4 // a contains the value 4 in 8 bits .align 1 b: .2byte 5 // b contains the value 5 in 16 bits .align 2 c: .4byte 256 // c contains the value 256 in 32 bits DataEnd: .end