MIPS Tower "programming and development", mips Tower
C # include
Void hanoi (char A, char B, char C, int n) {if (n = 1) {printf ("% c to % c \ n",, c); return;} else {hanoi (A, C, B, n-1); printf ("% c to % c \ n", A, C); hanoi (B, a, C, n-1) ;}} int main () {int n; scanf ("% d", & n); hanoi ('A', 'B ', 'C', n );}. datastr :. asciiz "to" str1 :. asciiz "\ n ". textmain: li $ v0, 5 syscallmove $ s0, $ v0 # use $ s0 as nli $ a0, 65li $ a1, 66li $ a2, 67 move $ t9, $ s0 jal hanoij endhanoi: li $ t0, 1beq $ t9, $ t0, printsw $ a0, 0 ($ sp) subi $ sp, $ sp, 4sw $ a1, 0 ($ sp) subi $ sp, $ sp, 4sw $ a2, 0 ($ sp) subi $ sp, $ sp, 4sw $ t9, 0 ($ sp) subi $ sp, $ sp, 4sw $ ra, 0 ($ sp) subi $ sp, $ sp, 4 move $ t1, $ a1move $ a1, $ a2move $ a2, $ t1subi $ t9, $ t9, 1jal hanoiaddi $ sp, $ sp, 4lw $ ra, 0 ($ sp) addi $ sp, $ sp, 4lw $ t9, 0 ($ sp) addi $ sp, $ sp, 4lw $ a2, 0 ($ sp) addi $ sp, $ sp, 4lw $ a1, 0 ($ sp) addi $ sp, $ sp, 4lw $ a0, 0 ($ sp) sw $ a0, 0 ($ sp) subi $ sp, $ sp, 4sw $ a1, 0 ($ sp) subi $ sp, $ sp, 4sw $ a2, 0 ($ sp) subi $ sp, $ sp, 4sw $ t9, 0 ($ sp) subi $ sp, $ sp, 4sw $ ra, 0 ($ sp) subi $ sp, $ sp, 4 addi $ a0, $ a0, 0li $ v0, 11 syscallli $ v0, 4la $ a0, strsyscallmove $ a0, $ a2li $ v0, 11 syscallli $ v0, 4la $ a0, str1syscalladdi $ sp, $ sp, 4lw $ ra, 0 ($ sp) addi $ sp, $ sp, 4lw $ t9, 0 ($ sp) addi $ sp, $ sp, 4lw $ a2, 0 ($ sp) addi $ sp, $ sp, 4lw $ a1, 0 ($ sp) addi $ sp, $ sp, 4lw $ a0, 0 ($ sp) sw $ a0, 0 ($ sp) subi $ sp, $ sp, 4sw $ a1, 0 ($ sp) subi $ sp, $ sp, 4sw $ a2, 0 ($ sp) subi $ sp, $ sp, 4sw $ t9, 0 ($ sp) subi $ sp, $ sp, 4sw $ ra, 0 ($ sp) subi $ sp, $ sp, 4 move $ t1, $ a0move $ a0, $ a1move $ a1, $ t1subi $ t9, $ t9, 1jal hanoiaddi $ sp, $ sp, 4lw $ ra, 0 ($ sp) addi $ sp, $ sp, 4lw $ t9, 0 ($ sp) addi $ sp, $ sp, 4lw $ a2, 0 ($ sp) addi $ sp, $ sp, 4lw $ a1, 0 ($ sp) addi $ sp, $ sp, 4lw $ a0, 0 ($ sp) jr $31 print: addi $ a0, $ a0, 0li $ v0, 11 syscallli $ v0, 4la $ a0, strsyscallmove $ a0, $ a2li $ v0, 11 syscallli $ v0, 4la $ a0, str1syscalljr $ 31end: li $ v0 10 syscall