切換
舊版
前往
大廳
主題

[創作|作業][MIPS]計算機組織期中作業:實作河內塔

極巨龍神塔奇 | 2018-04-25 18:13:35 | 巴幣 4 | 人氣 1799

計算機組織期中作業
安裝
  • 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
送禮物贊助創作者 !
0
留言

創作回應

羽翼ˊ● ω ●ˋ
在打甚麼碗糕
2018-04-25 18:28:30

更多創作