.global main    // "Export" the identifier "main"

       .text
main:
        push    {lr}   // Save the return address on the stack
        push    {fp}   // Save the frame pointer on the stack
                       // Explained later in CS255

        movw    r0, #:lower16:HelloStr
        movt    r0, #:upper16:HelloStr

        bl      printf  // Call printf function     

        pop     {fp}    // Pop the frame pointer
        pop     {pc}    // Pop the return address into PC
                        // Explained later in CS255

       .data
HelloStr:                      // Label marking this location
        .asciz "Hello World\n" // The Hello string


        .end