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ď č. 1Použí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