Files
LA32R/numadd.asm
2025-11-06 10:44:25 +08:00

17 lines
748 B
NASM

// Add from 1 to 50
// R1 stores the result
// R2 is a counter
// By default, R1, R2 is 0
// If R2 is 50, the program ends
// If R2 is not 50, the program adds R2 to R1 and increments R2 by 1
lu12i.w $r1, 0x00000 // r1 = 0x00000000 (result)
lu12i.w $r2, 0x00000 // r2 = 0x00000000 (counter)
lu12i.w $r3, 0x00000
addi.w $r3, $r3, 0x032 // r3 = 0x00000032 (50 in decimal)
addi.w $r2, $r2, 1 // r2 = r2 + 1 (increment counter)
add.w $r1, $r1, $r2 // r1 = r1 + r2 (add counter to result)
beq $r3, $r2, 12 // If r2 = 50, branch to 'end' label
b -12 // Jump back to the beginning of the loop
// 'end:' label is here
b -4 // Infinite loop: jump to itself