MIPS 汉诺塔“编程开发”
程序员文章站
2022-06-24 20:19:08
C语言
#include
void hanoi(char A,char B,char C,int n)
{
if(n==1)
{
printf("%c...
C语言 #include void hanoi(char A,char B,char C,int n) { if(n==1) { printf("%c to %c\n",A,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); } .data str:.asciiz" to " str1:.asciiz "\n" .text main: li $v0,5 syscall move $s0,$v0 #use $s0 as n li $a0,65 li $a1,66 li $a2,67 move $t9,$s0 jal hanoi j end hanoi: li $t0,1 beq $t9,$t0,print sw $a0,0($sp) subi $sp,$sp,4 sw $a1,0($sp) subi $sp,$sp,4 sw $a2,0($sp) subi $sp,$sp,4 sw $t9,0($sp) subi $sp,$sp,4 sw $ra,0($sp) subi $sp,$sp,4 move $t1,$a1 move $a1,$a2 move $a2,$t1 subi $t9,$t9,1 jal hanoi addi $sp,$sp,4 lw $ra,0($sp) addi $sp,$sp,4 lw $t9,0($sp) addi $sp,$sp,4 lw $a2,0($sp) addi $sp,$sp,4 lw $a1,0($sp) addi $sp,$sp,4 lw $a0,0($sp) sw $a0,0($sp) subi $sp,$sp,4 sw $a1,0($sp) subi $sp,$sp,4 sw $a2,0($sp) subi $sp,$sp,4 sw $t9,0($sp) subi $sp,$sp,4 sw $ra,0($sp) subi $sp,$sp,4 addi $a0,$a0,0 li $v0,11 syscall li $v0,4 la $a0,str syscall move $a0,$a2 li $v0,11 syscall li $v0,4 la $a0,str1 syscall addi $sp,$sp,4 lw $ra,0($sp) addi $sp,$sp,4 lw $t9,0($sp) addi $sp,$sp,4 lw $a2,0($sp) addi $sp,$sp,4 lw $a1,0($sp) addi $sp,$sp,4 lw $a0,0($sp) sw $a0,0($sp) subi $sp,$sp,4 sw $a1,0($sp) subi $sp,$sp,4 sw $a2,0($sp) subi $sp,$sp,4 sw $t9,0($sp) subi $sp,$sp,4 sw $ra,0($sp) subi $sp,$sp,4 move $t1,$a0 move $a0,$a1 move $a1,$t1 subi $t9,$t9,1 jal hanoi addi $sp,$sp,4 lw $ra,0($sp) addi $sp,$sp,4 lw $t9,0($sp) addi $sp,$sp,4 lw $a2,0($sp) addi $sp,$sp,4 lw $a1,0($sp) addi $sp,$sp,4 lw $a0,0($sp) jr $31 print: addi $a0,$a0,0 li $v0,11 syscall li $v0,4 la $a0,str syscall move $a0,$a2 li $v0,11 syscall li $v0,4 la $a0,str1 syscall jr $31 end: li $v0 10 syscall
上一篇: C和指针详情