由于某种原因,在第一次运行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
答案 0 :(得分:1)
你好像误解了系统调用8(read_string
)是如何工作的。
当你can see here它需要两个参数时:$a0
应该包含缓冲区的地址应存储字符串,$a1
应包含要读取的最大字符数。 $v0
中没有返回任何内容。