globl _main # Declares an instruction label as # global, making it accessible to # other files _main: # MIPS programs execute # instructions sequentially, where # the code under this label will be # executed first # Let's print "hello world" la $a0, hello_world # Load address of string stored # in memory li $v0, 4 # Load the syscall value (number # indicating which syscall to make) syscall # Perform the specified syscall # with the given argument ($a0) # Registers (used to hold data during program execution) # $t0 - $t9 # Temporary registers used for # intermediate calculations inside # subroutines (not saved across # function calls) # $s0 - $s7 # Saved registers where values are # saved across subroutine calls. text # Section that contains # instructions and program logic.
(.align 2 # represents word alignment since # 2^2 = 4 bytes). align 2 # Memory alignment of data, where # number indicates byte alignment # in powers of 2. space 60 # Allocates space in the RAM # (not cleared to 0) # Datatype sizes _byte. byte ' a ', ' b ' # Array of chars (1 byte each) buffer. word 1, 2, 3, 4, 5 # Array of words arr2. word 42 # Integers are referred to as words # (32-bit value) arr1.
asciiz "Hello World\n" # Declare a null terminated string num1. type value(s) ) form of declaration hello_world. data # Section where data is stored in memory (allocated in RAM), similar to # variables in higher-level languages # Declarations follow a ( label. # Comments are denoted with a '#' # Everything that occurs after a '#' will be ignored by the assembler's lexer.