0

目前正在编写汇编语言作业。我最初在 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 运行代码会正常执行,但不会执行并且会转发错误消息“Invalid Language Element: [str1]”

错误是我如何编写第 13 行和第 14 行引起的吗?我是否需要处理实际的十六进制地址而不是 .asciiz 名称?

4

1 回答 1

2

错误消息很清楚:[str1]不应该在那里。lui正好有两个操作数;一个寄存器和一个立即数。没有lui那种看起来像的形式lui $reg, imm [foo]

同样,ori恰好需要三个操作数,而[str1]行尾的 是不应该存在的垃圾。

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

于 2016-01-26T06:49:02.940 回答