45 lines
487 B
NASM
45 lines
487 B
NASM
// Program: Sum1ToN (R0 represents N)
|
|
// Computes R1 = 1 + 2 + 3 + ... + R0
|
|
// Usage: put a value >= 1 in R0
|
|
// i = 1
|
|
|
|
|
|
|
|
|
|
@i
|
|
M=1
|
|
// sum = 0
|
|
|
|
@sum
|
|
M=0
|
|
|
|
(LOOP) // if (i > R0) goto STOP
|
|
@i
|
|
D=M
|
|
@R0
|
|
D=D-M
|
|
@STOP
|
|
D;JGT // sum = sum + i
|
|
@sum
|
|
D=M
|
|
@i
|
|
D=D+M
|
|
@sum
|
|
M=D
|
|
// i = i + 1
|
|
@i
|
|
M=M+1 // goto LOOP
|
|
|
|
@LOOP
|
|
0;JMP
|
|
|
|
(STOP)
|
|
// R1 = sum
|
|
@sum
|
|
D=M
|
|
@R1
|
|
M=D // infinite loop
|
|
|
|
(END)
|
|
@END
|
|
0;JMP |