MIPs 指令编程

qq_40545705 2018-07-05 06:10:45
将程序输入QtSpim不显示报错,但是在输出框里面也没有任何东西,不知道是哪里的BUG。
Mips代码:
.globl main
.data
array:
.word 1
.word -1
.word 5
.word 6
.word 12
.word 21
.word 18
.word 44
.word 32
.word 9
.word 23
.word 10
.word 11
.word 99
.word 100
.word 23
.text
lui $sp 0x8000 #initialize the stack pointer
la $t0,array
main:addi $sp,$sp,-12 #stack grows by 12 bytes
sw $ra,8($sp) #save return address into stack
sw $s0,4($sp) #store $s0 so it can be used for littleindex
sw $s1,0($sp) #store $s1 so it can be used for i
addi $s0,$s0,15
move $s2,$s0
addi $s1,$s1,15
Loop1:slt $t3,$s1,$zero
bne $t3,$zero,exit1
Loop2:sll $t1,$s1,2
add $t1,$t0,$t1
sll $t2,$s0,2
add $t2,$t0,$t2
slt $t4,$t1,$t2
bne $t4,$zero,exit2
move $s0,$s1
addi $a0,$s0,0
exit2: addi $s1,$s1,-1
j Loop1
jal swap
exit1:lw $s1,0($sp)
lw $s0,4($sp)
lw $ra,8($sp)
addi $sp,$sp,12
jr $ra

swap:sll $t1,$a0,2
add $t1,$t0,$t1

lw $a1,0($t1)
lw $t3,56($t1)
sw $t3,0($t1)
sw $a1,56($t1)
jr $ra


C代码:
int array[]={1, -1, 5, 6, 12, 21, 18, 44, 32, 9, 23, 10, 11, 99, 100, 23};
void swap (int little)
{
int temp;
temp = array[little];
array[little] = array[15];
array[15] = temp;
}
main()
{
int i;
int littleindex = 15;
for (i=15; i > -1; i--) {
if (array[i] < array[littleindex])
littleindex = i;
}
swap(littleindex);
return 0;
}
...全文
1305 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2018-07-06
  • 打赏
  • 举报
回复
这个汇编是看不懂,但看 c 的代码,里面也没有输出的语句啊?

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧