about summary refs log tree commit diff
path: root/lang/mips/chapter-2/exercise-1/k.s
blob: 60c0038f0dce7640df24a94f46eb2d5a572b5c70 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# while (t0) { s1 += t0; t0 = *++t2; }
	.data
array:	.word	4, 2, 0, 6, 9

	.text
main:
	la	$t2,	array		# t2 = array
	lw	$t0,	($t2)		# t0 = *t2
	li	$s1,	0		# s1 = 0

while:
	beqz	$t0,	end		# if (!t0) goto end
	add	$s1,	$s1,	$t0	# s1 += t0
	addi	$t2,	$t2,	4	# t2++
	lw	$t0,	($t2)		# t0 = *t2
	j	while			# goto while
end:

	li	$v0,	1		# print integer
	move	$a0,	$s1		# at s1
	syscall

	li	$v0,	11		# print character
	li	$a0,	10		# newline
	syscall

	li	$v0,	10		# terminate program run
	syscall