我正在努力完成编写一个mips回文函数,该函数“向后读取相同的前向”,并且我的函数没有按需要工作。这是伤害我的大脑和任何帮助,不胜感激。谢谢!为什么mips回文功能不能按照规范工作?
回文的递归定义如下: 设字符串S表示为S = S1 S2 ... SN,其中N是字符串的长度。
S is a palindrome
if N = 0 or N = 1 or
if N 2 and S1 = SN and the substring (S2 .. SN-1) is a palindrome.
功能帕林($ A0,$ A1) 前提条件:
$ A0保持第一字节的地址的字符串(或子串)中,同时$ A1保持的字符串的长度被测试(或子串)
后置条件:
1(真)被返回到寄存器$ V0如果给定的字符串(或子串)是回文;否则,在$ v0中返回0(false)。
.data
prompt1: .asciiz "Enter length of string to be read: "
prompt2: .asciiz "Enter the string "
ItIs: .asciiz "\nThe string IS a palindrome!"
IsNot: .asciiz "\nThe string is NOT a palindrome!"
string: .asciiz ""
.text
.globl main
main:
la $a0, prompt1
li $v0, 4
syscall
li $v0, 5
syscall
move $a1, $v0
la $a0, prompt2
li $v0, 4
syscall
addi $a1, $a1, 1
la $a0, string
li $v0, 8
syscall
addi $a1, $a1, -1
jal Palin
bne $v0, $zero, label1
la $a0, IsNot
j label2
label1:
la $a0, ItIs
label2:
li $v0, 4
syscall
li $v0 10
syscall
nop
Palin:
# HERE IS THE FUNCTION
li $v0, 10
syscall
addu $ra, $zero, $s7 #restore $ra since the function calles
#another function
jr $ra
add $zero, $zero, $zero
add $zero, $zero, $zero
EndPalin:
什么意思是“不工作”? – smac89
对不起,我应该澄清。功能是问题。当我执行代码时,会显示第一个和第二个提示符,但输入一个字符串后,程序会退出而不打印,不管“是或不是”。 @ smac89 – MercedezB