Как сохранить в выделенном пространстве значение, содержащееся в регистре счетчика, преобразованном в ASCII - PullRequest
0 голосов
/ 03 мая 2019

У меня есть цикл for, который проверяет наличие Char в строке и сохраняет его индекс в другом виде:

Псевдокод:

for (x = 0; x < string.len(); x++) {
    if (string[x] == "A") {
        new_string.append(x)
    }
}

Это то, что я пробовал в MIPS

MIPS:

    add  $t0, $zero, $zero    # $t0 is the counter
loop:
    blt  $s2, $t0, Exit       # $s2 have the string.len()
    add  $s0, $s1, $t0        # point to the X char
                              # ($s1 is the string address)
    lb   $t1, 0($s0)
    bne  $t1, 0x41, endLoop   # if $t1 != "A" continue

    sb   $t0, 0($s4)          # store in newstring the X value
    addi $s4, $s4, 1          # point to the next space of newstring
endLoop:
    addi $t0, $t0, 1          # increment X
    j    loop
Exit:

В этом режиме я буду хранить цифру в буфере с sb $t0, 0($s4).Мне нужно преобразовать это значение в представление ASCII.

Максимальная длина входной строки может быть 256. Поэтому мне нужно представление, учитывающее этот предел.

Мне нужно представление ASCIIпотому что выходная строка будет обрабатываться другой функцией, которая шифрует входную строку, со свойством ASCII.

1 Ответ

0 голосов
/ 03 мая 2019

При увеличении адреса получателя вы неправильно используете $s3. Это должно быть addi $s4, $s4, 1

Кроме того, x <= string.len() является неправильным конечным условием. Это должно быть x < string.len(), так как вы начинаете с 0.

...