/ / ako nájsť znak v reťazci v zostave MIPS - zostava, mips

ako nájsť znak v retazci v zostave MIPS - montáž, mips

Ja som nový v MIPS zhromaždení, ja sa snažím, aby program, ktorý nájde charakter tesne predtým "?"

Napríklad, keď napríklad zadám vstup " abc?", výstup je "c?", Nemôžem nájsť svoju chybu.

Kód je tu:

.data

buffer: .space 1024
.text
.globl main

main:

la $a0,buffer
li $v0,8
syscall


la $t1,buffer


loop:
lb $t2,($t1)
beq $t2,"?",loop1
add $t1,$t1,1
j loop

loop1:
sub $t1,$t1,1
move $a0,$t1
li $v0,4
syscall

li $v0,10
syscall

odpovede:

2 pre odpoveď č. 1

Používate print_string syscall, ktorý nezastaví, kým nenájde NUL terminátor.

Ak chcete vytlačiť iba jeden znak, bolo by lepšie použiť print_character syscall (11); nahradiť

move $a0,$t1
li $v0,4

s

lb $a0,($t1)
li $v0,11