MIPS сборка простая для цикла (2) - PullRequest
0 голосов
/ 24 марта 2019

Это моя первая попытка научиться зацикливаться в MIPS.

.data
    spc: .asciiz ", "

.globl main

main:
    li $t0, 0

loop:
    bgt     $t0, 14, exit # branch if($t0 > 14) 
    addi    $t0, $t0, 1 # $t0++ for loop increment

    # print a comma
    la  $a0, spc # copy spc to $a0 for printing
    li  $v0, 4 # syscall value for strings
    syscall

    # repeat loop
    j   loop

exit:
    li  $v0, 10 # syscall value for program termination
    syscall

Вывод:

 -- program is finished running (dropped off bottom) --

Предполагается, что эта программа напечатает 15 запятых в консоли ввода-вывода.Этого не происходит.

В чем может быть проблема?

Ссылка: Сборка MIPS для простого цикла

1 Ответ

1 голос
/ 24 марта 2019

Вы собрали весь свой код в раздел .data;Вы никогда не переключались обратно на .text.

Если вы используете MARS, графический интерфейс не показывает никаких ассемблерных инструкций при разборке (после сборки).Вот почему.

По-видимому, вместо ошибки на main, находящейся на неисполняемой странице, MARS просто решает, что программа "упала снизу", как только вы ее запустите.

...