MIPS在第二轮循环时没有打印提示

时间:2016-02-29 05:03:52

标签: assembly mips

由于某种原因,在第一次运行inputLoop后,提示用户输入员工姓名的代码的第一部分不起作用?此外,我在第一次输入循环中的工资后打印出第一名员工的姓名,然后我必须按Enter键才能再次询问年龄。这是代码,下面是我到目前为止的示例输出。

.data
employees:  .space 480
prompt1: .asciiz "\n Please input the name of the employee: "
prompt2: .asciiz "\n Please input the age of the employee: "
prompt3: .asciiz "\n Please input the salary of the employee: "
newline: .asciiz "\n"
display1: .asciiz "\n Employee Name"
display2: .asciiz "                Age"
display3: .asciiz "                Salary"
.text
.globl main
main:
    li $t0, 5
    li $t1, 0
    jal employeeInfo
    li $v0, 10
    syscall
employeeInfo:
    inputLoop:
        beqz $t0, printEmployeesPre
        la      $a0, prompt1 
        li      $v0, 4   
        syscall
        li $v0, 8
        syscall
        sw $v0, employees($t1)
        add     $t1, $t1, 40
        la      $a0, prompt2    
        li      $v0, 4
        syscall
        li $v0, 5
        syscall
        sw $v0, employees($t1)
        add     $t1, $t1, 4
        la      $a0, prompt3    
        li      $v0, 4
        syscall
        li $v0, 5
        syscall
        sw $v0, employees($t1)
        add     $t1, $t1, 4
        addi    $t0, $t0, -1
        b inputLoop

以下是输出样本:

  

请输入员工姓名:rod

     

请输入员工的年龄:6

     

请输入员工的工资:4

     

     

请输入员工的年龄:6

     

请输入员工的工资:7

1 个答案:

答案 0 :(得分:1)

你好像误解了系统调用8(read_string)是如何工作的。
当你can see here它需要两个参数时:$a0应该包含缓冲区的地址应存储字符串,$a1应包含要读取的最大字符数。 $v0中没有返回任何内容。