MIPS汇编程序设计

1、采用MIPS汇编指令(指令序列)实现以下C语言语句功能。假定变量i、j分别对应寄存器$a0、$a1,整型数组a、b的首地址分别存储在寄存器$s0、$s1中。 while(a[i]!=0) { if(a[i]>b[i]) a[i]=1; else a[i]=2; i++; }

解答:

.data
a:.word 8,7,6,5,4,3,2,1
.space 0x20
b:.word 1,2,3,4,5,6,7,8
.text
la $s0,a
la $s1,b
li $a0,0
loop:
sll $t0,$a0,2
add $t7,$s0,$t0 #a[i]地址
lw $t1,0($t7) #取出a[i]放入$t7,一开始t7写成t0,导致后面t0的值改变,报错
add $t2,$s1,$t0  #b[i]地址
lw $t3,0($t2)    #取出b[i]放入$t3

beq $t1,$0,exit
slt $t4,$t3,$t1
beq $t4,$0,el
addi $t5,$0,1
sw $t5,0($t7)  #a[i]=1 
j Label
el:  
addi $t6,$0,2
sw $t6,0($t7)  #a[i]=2
Label:
addi $a0,$a0,1
beqz $t1 exit
j loop

exit:

2、使用MIPS汇编语言实现求字类型数组chico[10]所有元素的和,并将和保存在chico 后的内存单元中,已知chico数组的首地址保存在$s0中

add $t0,$0,$0
loop:
slti $t1,$t0,10 #判断是否小于10,并将值存入$t1
beq $t1,$0,exit  #若不小于10,跳转到exit处
sll $t2,$t0,2
add $t3,$t2,$s0
lw $t4,0($t3)  #取出chico[i],放入$t4
lw $t5,40($s0)  #取出保存的地址的值,放入寄存器$t5
add $t5,$t5,$t4
sw $t5,40($s0) #存回去
addi $t0,$t0,1
j loop

exit:

3、使用MIPS汇编语言将字类型数组SRC[10]所有元素对应拷贝到DST[10],其中SRC的首地址保存在$s0中,DST的首地址保存在$s1中。

add $t0,$0,$0
loop:
slti $t1,$t0,10 #判断是否小于10,并将值存入$t1
beq $t1,$0,exit  #若不小于10,跳转到exit处
sll $t2,$t0,2
add $t3,$t2,$s0
add $t5,$t2,$s1
lw $t4,0($t3)  #取出DST[i],放入$t4
sw $t4,0($t5)
addi $t0,$t0,1
j loop

exit:

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值