ユーザーが入力した文字を再帰を使用して右のアルファベット順の文字列に挿入し、別の文字を要求する必要があります。一度に入力できる文字は1文字だけです。再帰を使用して文字を文字列に挿入しますか? (MIPS)
文字列をスキャンするのが良い方法だと思っていました。入力された文字列がアルファベット文字列の中の文字列と一致すると、その文字列を挿入します。しかし、私はそれをコードに入れるのに問題があります。私も再帰(スタック、$ jal、$ jr $ ra)を使用する必要がありますが、私はそのようにそれを使用する方法に完全に慣れていません。ここで
は、これまでの私のコードです:
.data
str: .asciiz "abcdefghijklmnopqrstuvwxyz .space 30"
input: .asciiz "Please input a letter: "
error1: .asciiz "Error! Please only enter one lowercase letter!"
print1: .asciiz "The string is: "
.text
main:
la $s0,0
li $v0,4
la $a0,input
syscall
loop:
li $v0,8
syscall
move $t0,$v0
blt $t0,61,error #if less than a
bgt $t0,80,error #if more than z
bge $t0,0x50,print #when user enters P, print
loop2:
lb $t2,str($s0) #load first byte of string
bge $t0,$t2,store #if input char=string char, store it
addi $s0,$s0,1 #next char in string
j loop
store:
sw $t0,str($s0) #store char in string
addi $s0,$s0,1 #next char in string
j loop
error:
li $v0,4
la $a0,error1 #print error message
syscall
j loop #jump back to loop
print:
li $v0,4
la $a0,print1 #print dialogue
syscall
li $v0,4
la $a0,str #print string
syscall