diff options
author | Nguyễn Gia Phong <vn.mcsinyx@gmail.com> | 2020-02-10 17:49:10 +0700 |
---|---|---|
committer | Nguyễn Gia Phong <vn.mcsinyx@gmail.com> | 2020-02-10 17:49:10 +0700 |
commit | 9e37e768b4694038a757366fcdf8e4c6e3ca788d (patch) | |
tree | 87d7d54499471e7694d87743fcbb5c178c8ed159 /mips/chapter-2/exercise-1/k.s | |
parent | 57bfdfe2e58a9dcf95f94d38cbd654b18035735a (diff) | |
download | cp-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.s | 28 |
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 |