.text
la $t5, prompt
la $t6, prompt_char
la $t7, prompt_loop
loop:
la $t4, 0 #count
askForString:
la $a0, prompt
li $v0, 4
syscall
li $v0,8
li $a1, 5 #text einlesen
syscall
j quit
quit:
la $a0, ($t7)
li $v0, 4 #info
syscall
li $a1, 5 #text einlesen
li $v0,5
syscall
beq $v0,1,askForString
exit:
.data
prompt: .asciiz "\nPlease enter text\n"
prompt_char: .asciiz "\njetzt bitte ein Zeichen\n"
prompt_loop: .asciiz "\nAgain: 1, Exit: 0.\n"
endl: .asciiz "\n\n"
如果我继续循环,那么我存储在“提示”(系统调用4)中的文本的问题将被输入(系统调用5)覆盖。 我需要清洁$ a0还是问题。请帮助
我的结果:
请输入文字
aa
再次:1,退出:0。
1
aa(此处应为“请输入文字”)
1
再次:1,退出:0。
1
1(此处应为“请输入文字”)
0
再次:1,退出:0。
0
-程序运行完毕(从底部移出)-
答案 0 :(得分:0)
您需要一个新的存储位置作为输入字符串:
.text
la $t5, prompt
la $t6, prompt_char
la $t7, prompt_loop
loop:
la $t4, 0 #count
askForString:
la $a0, prompt
li $v0, 4
syscall
li $v0,8
la $a0, input #### --> Other address here
li $a1, 5 #text einlesen
syscall
j quit
quit:
la $a0, ($t7)
li $v0, 4 #info
syscall
li $a1, 5 #text einlesen
li $v0,5
syscall
beq $v0,1,askForString
exit:
.data
prompt: .asciiz "\nPlease enter text\n"
prompt_char: .asciiz "\njetzt bitte ein Zeichen\n"
prompt_loop: .asciiz "\nAgain: 1, Exit: 0.\n"
endl: .asciiz "\n\n"
input: .space 128 ### --> Some space to put the input