KamilSzmit Opublikowano 21 Marca 2010 Zgłoś Opublikowano 21 Marca 2010 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? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...