0

現在、アセンブリ言語の割り当てをコーディングしています。元々は MARS コンパイラで疑似を有効にしてコーディングし、疑似コマンドを 1 つずつ変換しました。現在、「Invalid Language Element: [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]」というエラー メッセージが表示されます。

13行目と14行目の書き方でエラーが発生するのでしょうか? .asciiz 名ではなく、実際の 16 進アドレスを指定する必要がありますか?

4

1 に答える 1

2

エラー メッセージは非常に明確です[str1]。そこに存在するはずがありません。luiちょうど 2 つのオペランドを取ります。レジスターとイミディエイト。luiのような形はありませんlui $reg, imm [foo]

同様に、oriは正確に 3 つのオペランドを取り[str1]、行末の はそこにあるはずのないガベージです。

1|( 、2|などの文字列は実際のソース コード ファイルには含まれていないと想定しています。これも問題になるためです)

于 2016-01-26T06:49:02.940 に答える