我坚持锻炼,不确定如何继续锻炼。这是练习:
编写一个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
答案 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,但是,有两个不同之处。首先,他们测试 一个值是否小于另一个值,其次,它们不分支给某些值 地址,但是,设置一个标志,存储在第一个操作数中。