简单的MIPS汇编程序,用于获取用户输入并存储它

时间:2013-12-30 17:01:40

标签: assembly

我正在尝试编写一个函数,要求用户输入两个数字,一次一个。第一个顺利,但是我遇到第二个问题(我复制了行,“ask”是一个字符串,要求用户添加输入)。有什么问题?

main:
    addi    $sp, $29, -8
    sw  $31, 0($29) # save register 31 (ra)  (since there is a nested / recursive procedure)

    sw  $0, 4($29)  # Space for parameter n1 on stack
    li  $v0, 4      # Ask for number
    la  $a0, ask    
    syscall
    li  $v0, 5      # read int
    syscall         # $v0 holds the integer - n1
    sw  $v0, 4($29) # save n1 on stack
    move    $a0, $v0    # prepare argument for func




    sw  $0, 4($29)  # Space for parameter n2 on stack
    li  $v1, 4      # Ask for number
    la  $a1, ask    
    syscall
    li  $v1, 5      # read int
    syscall         # $v1 holds the integer - n2
    sw  $v1, 4($29) # save n2 on stack
    move    $a1, $v1    # prepare argument for func

谢谢!

1 个答案:

答案 0 :(得分:0)

下面:

sw  $0, 4($29)  # Space for parameter n2 on stack

你覆盖堆栈中的n1。

您只为一个参数预留空间并在堆栈中返回地址。

系统调用也使用某些寄存器来存储某些数据。你无法决定:

li  $v1, 4      # Ask for number
la  $a1, ask    
syscall