Ошибка при создании программы цикла while в MARS ".asciiz не является допустимой целочисленной константой или меткой" - PullRequest
0 голосов
/ 07 мая 2019

Я загрузил MARS на свой Mac (уже установлен jdk), чтобы запустить некоторый код MIPS, и получаю странную ошибку: «.asciiz не является допустимой целочисленной константой или меткой».

Я следую этому уроку: https://www.youtube.com/watch?v=0aexcR9CNcE

Я попытался отладить его, изменив кавычки (может, это решает проблему?), И посмотрел в Интернете, чтобы найти похожую ошибку.

.data
    message .asciiz "While loop completed"
    space .asciiz " ,"

.text
main:
#i=0

addi $t0, $zero, 1

while:
    bgt $t0, 10, exit
    jal printNumber
    addi $t0, $t0, 1    #i++

    j while         #jump back to the while loop

exit:
li $v0, 4
la $a0, message
syscall



#end of program 
li $v0, 10 
syscall

printNumber:
    li $v0, 1
    add $a0, $t0, $zero
    syscall

    li $v0, 4
    la $a0, space
    syscall

    jr $ra

Вот что я получил:

Ошибка в /Users/shivanshsuhane/Desktop/ while_loop.asm строке 2 столбца 10: ".asciiz" не является допустимой целочисленной константой или меткой

Ошибка в /Users/shivanshsuhane/Desktop/ while_loop.asm строке 2 столбца 18: "" Пока цикл завершен "" не является допустимой целочисленной константой или меткой

Ошибка в /Users/shivanshsuhane/Desktop/ while_loop.asm строке 3 столбца 8: ".asciiz" не является допустимой целочисленной константой или меткой

Ошибка в /Users/shivanshsuhane/Desktop/ while_loop.asm строке 3 столбца 16: "", "" не является допустимой целочисленной константой или меткой

Ошибка в /Users/shivanshsuhane/Desktop/ while_loop.asm строке 2 столбца 2: символ "сообщение" не найден в таблице символов.

Ошибка в /Users/shivanshsuhane/Desktop/ while_loop.asm строке 3 столбца 2: символ "пробел" не найден в таблице символов.

Сборка: операция завершена с ошибками.

Я ожидал список целых чисел до 10, разделенных запятыми.

1 Ответ

1 голос
/ 07 мая 2019

Используйте message: и space: для отделения метки от директивы.

Встроенный ассемблер MARS не анализирует ее иначе;Я думаю, что message рассматривается как инструкция, если нет :, чтобы сделать его меткой.

Я пробовал в MARS и могу воспроизвести вашу ошибку без символов :.Это делает в порядке:

.data
    message: .asciiz "While loop completed"
    space:   .asciiz " ,"
...