.global main, Stop, CodeEnd, DataStart, DataEnd .text main: movw r0, #:lower16:a movt r0, #:upper16:a ldr r0, [r0] // r0 = a movw r1, #:lower16:x movt r1, #:upper16:x ldr r1, [r1] // r1 = x cmp r0, r1 bgt else movw r0, #:lower16:x movt r0, #:upper16:x ldr r0, [r0] // r0 = x movw r1, #:lower16:b movt r1, #:upper16:b ldr r1, [r1] // r1 = b cmp r0, r1 bgt else // x = x + 1 movw r0, #:lower16:x movt r0, #:upper16:x ldr r1, [r0] // r0 = x add r1, r1, #1 str r1, [r0] b ifEnd else: // x = x-1 movw r0, #:lower16:x movt r0, #:upper16:x ldr r1, [r0] // r0 = x sub r1, r1, #1 str r1, [r0] ifEnd: Stop: CodeEnd: nop /* -------------------------------------------------- Begin of the permanent program variables -------------------------------------------------- */ .data DataStart: .align 2 x: .4byte 14 // .align 2 y: .4byte 3 .align 2 max: .skip 4 .align 2 a: .4byte -10 .align 2 b: .4byte 10 DataEnd: .end