在MARS中制作while循环程序时出错“ .asciiz不是有效的整数常量或标签”

时间:2019-05-06 22:09:40

标签: assembly mips mips32 mars-simulator

我在Mac(已经安装了jdk)上下载了MARS,以运行一些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 个答案:

答案 0 :(得分:1)

使用message:space:将标签与指令分开。

MARS的内置汇编程序不会以其他方式解析它;我认为如果没有message使其成为标签,它将:视为指令。

我在MARS中尝试过,我可以在没有:字符的情况下重现您的错误。这确实可以很好地组装:

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