总是回到同一个整数

时间:2015-11-30 23:07:55

标签: assembly mips eclipse-mars

有一个家庭作业问题,要求我接受两个用户输入,比较它们,并将它们输入到等式中。

这是我的模板:($ t1 + 5) - ($ t2 * 2)=结果

但是,每次运行它时,我的返回值似乎都是5(或05)。我不太确定我做错了什么。

以下是代码:

.text

# First Input - Saved to $t1
la  $a0, input
li  $v0, 4
syscall

li  $v0, 5
move    $a0, $t1
syscall

# Second Input - Saved to $t2
la  $a0, input2
li  $v0, 4
syscall

li  $v0, 5
move    $a0, $t2
syscall

# Compare the two Inputs
bgt $t1, $t2, Bigger
blt $t1, $t2, Smaller

# If the 1st is greater
# ($t1 + 5) - ($t2 * 2) = result
Bigger:
    add $t4, $t1, 5 # $t4 = $t1 + 5
    mul $t5, $t2, 2 # $t5 = $t2 * 2
    sub     $t7, $t4, $t5   # $t7 = $t4 - $t5
    syscall

    li  $v0, 1
    move    $a0, $t7
    syscall

    li  $v0, 10
    syscall

# If the 1st is smaller
Smaller: 
    add $t4, $t2, 5 # $t4 = $t2 + 5
    mul $t5, $t1, 2 # $t5 = $t1 * 2
    sub     $t7, $t4, $t5   # $t7 = $t4 - $t5

    li  $v0, 1
    move    $a0, $t7
    syscall

    li  $v0, 10
    syscall


.data

input:  .asciiz "Enter the First Integer: "

input2: .asciiz "Enter the Second Integer: "

Halt:   li  $v0, 10
        syscall

有任何帮助吗?谢谢!

1 个答案:

答案 0 :(得分:2)

<a href='#select'>系统调用只需要read_int中的函数代码5,并在那里返回输入值。所以而不是:

$v0

你应该这样做:

li  $v0, 5
move    $a0, $t1
syscall

同样适用于其他课程。

结合@ markgz关于li $v0, 5 syscall move $t1, $v0 寄存器被保存的注释,整个代码可能如下所示:

$t