about summary refs log tree commit diff
path: root/mips/chapter-2/exercise-1/k.s
diff options
context:
space:
mode:
authorNguyễn Gia Phong <vn.mcsinyx@gmail.com>2020-02-10 17:49:10 +0700
committerNguyễn Gia Phong <vn.mcsinyx@gmail.com>2020-02-10 17:49:10 +0700
commit9e37e768b4694038a757366fcdf8e4c6e3ca788d (patch)
tree87d7d54499471e7694d87743fcbb5c178c8ed159 /mips/chapter-2/exercise-1/k.s
parent57bfdfe2e58a9dcf95f94d38cbd654b18035735a (diff)
downloadcp-9e37e768b4694038a757366fcdf8e4c6e3ca788d.tar.gz
[mips] Finish the second chapter
Diffstat (limited to 'mips/chapter-2/exercise-1/k.s')
-rw-r--r--mips/chapter-2/exercise-1/k.s28
1 files changed, 28 insertions, 0 deletions
diff --git a/mips/chapter-2/exercise-1/k.s b/mips/chapter-2/exercise-1/k.s
new file mode 100644
index 0000000..60c0038
--- /dev/null
+++ b/mips/chapter-2/exercise-1/k.s
@@ -0,0 +1,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