From 4e1a5c0d6b29a9420e0fb17e14416f086c2b9311 Mon Sep 17 00:00:00 2001 From: unlockable Date: Fri, 3 May 2024 00:04:23 +0800 Subject: [PATCH] 1.3 --- 1/homework/exp1/exp1_3.asm | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 1/homework/exp1/exp1_3.asm diff --git a/1/homework/exp1/exp1_3.asm b/1/homework/exp1/exp1_3.asm new file mode 100644 index 0000000..3fdcbb9 --- /dev/null +++ b/1/homework/exp1/exp1_3.asm @@ -0,0 +1,60 @@ +.data +.text +li $v0 5 # read in num +syscall + +move $s0, $v0 # $s0 is n +move $a0, $v0 +li $v0, 9 # malloc +syscall +move $s1, $v0 # $s1 = a + +move $t0, $zero # a0 = 0 + +move $t0, $zero # i = 0 +move $t1, $s1 #t1 = a +read_in_num: bge $t0, $s0, done_read_in_num # i >= n, break +li $v0, 5 # read in num +syscall + +sw $v0, 0($t1) # a[i] = v0 +addi $t0, $t0, 1 # i++ +addi $t1, $t1, 4 # t1 += 4 +j read_in_num + +done_read_in_num: srl $s2, $s0, 1 # s1 = n / 2 +move $t0, $zero # i = 0 +move $t1, $s1 + +subi $t2, $s0, 1 # t2 = n - 1 +sll $t2, $t2, 2 # t2 *= 4 +add $t2, $t2, $s1 +reverse: bge $t0, $s2, done_reverse # i >= n / 2, break +lw $t3, 0($t1) # t3 = a[i] +addi $t3, $t3, 1 # t3 += 1 + +lw $t4, 0($t2) # t4 = a[n - i - 1] +addi $t4, $t4, 1 # t4 += 1 + +sw $t4, 0($t1) +sw $t3, 0($t2) + +addi $t0, $t0, 1 +addi $t1, $t1, 4 +subi $t2, $t2, 4 +j reverse + +done_reverse: move $t0, $zero +move $t1, $s1 + +output: bge $t0, $s0 done_output +lw $a0, 0($t1) +li $v0 1 +syscall + +addi $t0, $t0, 1 +addi $t1, $t1, 4 +j output + +done_output: li $v0 17 +syscall \ No newline at end of file