MIPS Ассамблея Палиндром - PullRequest
       17

MIPS Ассамблея Палиндром

0 голосов
/ 10 сентября 2018

Я пытаюсь проверить, является ли набор строк палиндромом или нет. Я удостоверился, что проверил длину строки так, чтобы, если это достигает нуля, это вернулось бы к последней букве в строке. Я не уверен, правильно ли я это сделал. Затем я сравниваю последний и первый символ строки и продолжаю, пока она не достигнет середины. Вот что у меня сейчас есть:

CheckPalindrome:
addi $t0, $a0, 0
addi $t1, $t0, 0

StrLen:
lbu  $t2, 0($t1)
beq  $t2, $0, End #If equal to 0 end loop
addi $t1, $t1, 1
j    StrLen #Loop

End:
addi $t1, $t1, -1

Compare:
#If string is less than 2 then is palindrome
slti $t0, $t0, 2
bne $t0, $0, True

#Compare first and last characters
lbu  $t0, 0($a0) #load first character to t0
addi $t1, $t1, -1 #t1 points to the last letter in string
lbu  $t1, 0($t1) #load last character into t1
add $t1, $t1, $a0
bne  $t0, $t1, False #If first and last char not equal, return false

addi $a2, $a2, -2
addi $a0, $a0, 1
j Compare

True:
addi $v0, $0, 1 
jr   $ra

False:
addi $v0, $0, 0 
jr   $ra

Токовый выход:

 is not a palindrome.
a is not a palindrome.
b is not a palindrome.
aba is not a palindrome.
abba is not a palindrome.
baab is not a palindrome.
ababa is not a palindrome.
aabba is not a palindrome.
abbab is not a palindrome.

Это, очевидно, не правильно, так что любой вклад в то, как это исправить, было бы замечательно.

...