計算機組織期中作業
安裝
- QtSpim(執行 MIPS 指令)
- Notepad++(建議的文字編輯器)
- 當然,你也可以用其他文字編輯器。
注意事項
- 在執行任何 Code 前,都要 Reinitialize Simulator 。
- Qtspim 不能編輯 Code,所以要先用文字編輯器編輯程式碼。
- 記得先把 Window/Console 打開,才會顯示出東西。
- Single step 用來 Debug 的,按一次執行一行程式碼。
作業題目
- 實作河內塔
- 別擔心,助教已經完成大部分的程式碼,只剩下 L1 裡面的程式碼
- 請用遞迴的方式寫
Project 注意事項
- 請勿抄襲。
- 只能在 L1 裡面編輯程式碼。
- 檔名為:你的學號_姓名.asm(eg. 10xxxxxxx_王大錘.asm),再把程式碼壓縮到:你的學號_姓名.zip(or .rar, .7z),所以壓縮檔內只有程式碼。
- 上傳壓縮檔至 LMS,若有更新,請刪除舊的上傳檔。
- 執行環境以助教的環境為基準。
- 若違反,視情況扣分或者零分(抄襲)。
.data Promt: .asciiz "Enter the number of disks (>0 & <32): " Warning: .asciiz "Input must (> 0 & <32)" Result: .asciiz "The number of steps : " .globl main .text main: li $v0, 4 #Print Promt la $a0, Promt syscall li $v0, 5 #Read Input syscall slti $t0, $v0, 1 #Check input number bne $t0, $0, Warn slti $t0, $v0, 32 beq $t0, $0, Warn add $a0, $v0, $0 jal hanoi add $a1, $v0, $0 li $v0, 4 #Print Result text la $a0, Result syscall add $a0, $a1, $0 li $v0, 1 #print result syscall jal Exit hanoi: addi $sp, $sp, -8 #save $ra, $a0 sw $ra, 4($sp) sw $a0, 0($sp) slti $t0, $a0, 2 beq $t0, $0, L1 addi $v0, $0, 1 addi $sp, $sp, 8 jr $ra L1: ##### ##### ##### #your code addi $a0, $a0, -1 jal hanoi lw $a0, 0($sp) lw $ra, 4($sp) addi $sp, $sp, 8 mul $v0, $v0, 2 addi $v0, $v0, 1 jr $ra ##### ##### ##### Warn: li $v0, 4 #Print Warning text la $a0, Warning syscall jal Exit Exit: li $v0, 10 #Exit syscall |