具有整数和参数示例的MIPS程序

时间:2014-03-11 16:44:27

标签: arguments mips

我坚持锻炼,不确定如何继续锻炼。这是练习:

编写一个MIPS汇编语言程序Test,它接受2个整数作为参数和 如果整数相等则返回0,如果第一个小于第二个则返回1,如果第一个小于第二个则返回2 比第二个。 编写一个MIPS汇编语言程序,读入2个整数,调用程序Test,然后 输出以下消息之一: 整数是平等的 第一个整数小于第二个整数 第一个整数大于第二个

这样做的例子是什么? Mips对我来说非常困惑,因为我已经习惯了Java。谢谢。

编辑:这是我作为基础使用的程序,因为我不确定从哪里开始:

.data 
str1: .asciiz "Please Enter Integer 1: "  # a
str2: .asciiz "Please Enter Integer 2: "  # a
str3: .asciiz "The sum is "  # a
newline: .asciiz "\n"  # g

 .text 
main: addi $v0, $zero, 4   
 la $a0, str1          
 syscall                   

 addi $v0, $zero, 5       
 syscall           

 add $s0, $zero, $v0       

 addi $v0, $zero, 4        
 la $a0, str2          
 syscall               

 addi $v0, $zero, 5        
 syscall               

 add $s1, $zero, $v0       

L1: beq $s1, $zero, cont  
    addi $v0, $zero, 1    
    add $a0, $s0, $zero   
    addi $s1, $s1, -1     
    syscall               
    j L1              

 cont: addi $v0, $zero, 4      
 la $a0, newline       
 syscall           

 addi $v0, $zero, 10       
 syscall           

 jr $ra            

1 个答案:

答案 0 :(得分:-1)

要检查一个寄存器的值是否小于另一个寄存器的值,我们可以使用 set-on-less-than指令,也有一个比直接对应的指令。

slt $ r0,$ r3,$ r4 ()如果r3< r4,r0设置为1 否则r0设置为0 slti $ r0,$ r3,10 ()如果r3< 10,r0设置为1 否则r0设置为0

slt和slti类似于beq或bne,但是,有两个不同之处。首先,他们测试 一个值是否小于另一个值,其次,它们不分支给某些值 地址,但是,设置一个标志,存储在第一个操作数中。