/*
Lines enclosed here are comments
A small program: prints "Hello World!"
*/
// From // to the end of this line is a comment: next are directives to the assembler
.equ SYS_EXIT, 93
.equ SYS_WRITE, 64
.data // tells assembler to assemble the following in the data section
msg: .asciz "Hello World!\n" //msg retains the address of the string
.text // tells assembler to assemble the following
// in the text (code) section
.globl _start // _start is there where the program starts,
// .globl makes it visible to the linker
_start:
mov x0,#1 // value 1 is placed in register x0
adr x1,msg // the address retained by label msg is placed in register x1
mov x2,#13
mov w8, #SYS_WRITE // svc must find the syscall number in w8
// and the syscall arguments in x0,x1,x2
svc #0 // invoke syscall: displays on the screen
mov x0, #0 // in x0 put the value you want to exit with
mov w8,#SYS_EXIT
svc #0
.end
