Skocz do zawartości
KamilSzmit

[asm, MIPS] Odwracanie ciągu znaków

Rekomendowane odpowiedzi

Chciałbym napisać program asemblerze MIPS (dla SPIM), który będzie "przepuszczał" tylko znaki 0 - 9, a - f i A - F oraz będzie odwracał powstały ciąg znaków (tzn. zamiana miejscami pierwszego znaku z ostatnim, drugie z przedostatnim itd.). Napisany przeze mnie program poprawnie "przepuszcza znaki", ale nie odwraca ciągu:

 

.globl main    .data    s1: .asciiz "01amFH"    .textmain:    la $a0, s1    jal stricnv    move $a0, $v0    li $v0, 4    syscall    li $v0, 10    syscallstricnv:    move $v0, $a0    move $t0, $a0chloop:    lb $t1, ($a0)    beqz $t1, exit    blt $t1, '0', skip    ble $t1, '9', store    blt $t1, 'A', skip    ble $t1, 'F', store    blt $t1, 'a', skip    bgt $t1, 'f', skipstore:    sb $t1, ($t0)    addi $t0, $t0, 1skip:    addi $a0, $a0, 1    j chloopexit:    sb $zero, ($t0)    move $a0, $v0    addi $t0, $t0, -1loop:    lb $t1, ($a0)    beqz $t1, end    lb $t2, ($t0)    sb $t1, ($t0)    sb $t2, ($a0)    addi $a0, $a0, 1    addi $t0, $t0, -1    j loopend:    jr $ra

Ciąg próbuje odwrócić po etykiecie loop. Dlaczego program wyświetla nie odwrócony ciąg? Co zrobić, aby został wyświetlony w konsoli odwrócony ciąg znaków?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...