程序一次接受单字母键盘输入。该 字母输入必须是小写字母a到z(不是大写或 允许使用非字母字符;只有小写字母)。只有一个 信必须一次输入;确保角色只是一个 小写字母。
•在数据声明中,声明按字母顺序排列 字母串(名为“str”),a-z。
•程序必须输入a 键盘中的字符,确定它在字符串中的位置,以及 在字符串中为该字符创建一个空格,将其插入 适当的字母顺序。
•按字母顺序排列的26后字符串 字母,声明30个空值的序列(使用“.space” 指令),作为插入字符时字符串的扩展空间 进入按字母顺序排列的列表。
•在任何时候,您都可以要求打印 当前字符串(即,具有尽可能多的字母插入 通过键盘输入大写字母P。
•最后,这个程序 必须使用递归例程将字母插入正确的点 在该计划中。
到目前为止我的代码
.data
str: .asciiz"abcdefghijklmnopqrstuvwxyz\n"
espace: .space 30
prompt: .asciiz "Please enter a lowercase letter \n"
error1: .asciiz "Error! Please input a lowercase letter. \n"
answer: .asciiz "The alphebetized letters so far are \n"
.text
main: la $s0,0
li $v0,4
la $a0,prompt
syscall
loop: li $v0,12
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: la $t0,str+26
li $t1,'a'
sb $t1,($t0) # append an 'a' to the string
sb $zero,1($t0) # add a NULL terminator after the 'a'
sw $t0,str($s0) #store char in string
addi $s0,$s0,1
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,answer #print dialogue
syscall
li $v0,4
la $a0,str #print string
syscall
我只需要知道如何编写代码,以便在字符串中输入字符