由于缺乏来源,我可以得到我的手,这似乎很奇怪,我没有人张贴一个程序作为解决这个问题在互联网上的MIPS(除非我是在网上冲浪坏).我需要澄清我的程序是否可以写在一个更有效和优化的方式,而不仅仅是垃圾邮件标签和分支!
.data
msg : .asciiz "Give the month: "
msg1 : .asciiz "This month contains 31 Days."
msg2 : .asciiz "This month contains 30 Days."
msg3 : .asciiz "This month contains 28/29 Days."
.text
.globl main
main:
li $v0,4
la $a0,msg
syscall
li $v0,5
syscall
move $t0,$v0 #t0 contains given month
li $t7,7
li $t2,2
li $t1,0
div $t0,$t2
mfhi $t3
mflo $t4
bgt $t0,$t7,etiq3
beq $t0,$t2,etiq2
beqz $t3,etiq1
bgtz $t3,etiq
etiq:
li $v0,1
addi $a0,$s1,0
syscall
li $v0,4
la $a0,msg1
syscall
j exit
etiq1:
li $v0,1
addi $a0,$s0,0
syscall
li $v0,4
la $a0,msg2
syscall
j exit
etiq2:
li $v0,1
addi $a0,$s0,0
syscall
li $v0,4
la $a0,msg3
syscall
j exit
etiq3:
beqz $t3,etiq
bgtz $t3,etiq1
exit:
li $v0,10
syscall
1条答案
按热度按时间zdwk9cvp1#
你的代码没有很好的注解,所以很难理解。特别是为什么你要打印
$s0
和$s1
,这两个都没有初始化。对于优化的解决方案,一种可能性是使用位图(每月2比特):
当然,您也可以将消息指针放到一个有12个条目的表中,这样代码会更简单,但会占用更多内存。