语言元素无效:[变量]

时间:2016-01-26 02:23:11

标签: assembly mips mars-simulator qtspim

目前正在编写汇编语言分配。我最初在MARS编译器中使用伪编码对其进行编码,然后逐个翻译伪命令。目前我无法收到错误消息"无效的语言元素:[str1]"。这只是我代码的一小部分。

 1|.data
 2|val1: .word 1    #0x10010000
 3|val2: .word 2    #0x10010004
 4|val3: .word 3    #0x10010008
 5|name:    .asciiz "Jacob McDonald"    #0x1001000C length 15
 6|str1:    .asciiz "Enter a number: "  #0x1001001B length 17
 7|newln:   .asciiz "\n"            #0x1001002C
 8|.globl main
 9|.text
10|main:
11|addi $16, $0, 23             #Load 23 into $s0 
12|addi $2, $0, 4                #Set syscall command 4, print string 
13|lui $1, 4097 [str1]           #Load string to be printed to queue 
14|ori $4, $1, 27 [str1]    
15|syscall                      #syscall print string str1 

我不确定我需要修复什么,因为如果我通过qtSpim运行代码将执行正常,但不会执行并将中继错误消息"无效的语言元素:[str1]& #34;

错误是我写第13和14行的原因吗?我是否需要解决实际的十六进制地址而不是.asciiz名称?

1 个答案:

答案 0 :(得分:2)

错误信息很清楚:[str1]不应该在那里。 lui只需要两个操作数;登记册和直接登记。没有lui形式的lui $reg, imm [foo]

类似地,ori只需要三个操作数,而行尾的[str1]是垃圾,不应该在那里。

(我假设1|2|等字符串不在您的实际源代码文件中,因为这也是一个问题)