0

プロジェクトの一部でユーザーが入力した文字列を保存しようとすると、単にファイルをロードすると、spim で次のエラーが表示されます。

フィールドの即時値が大きすぎます: [0x0040009c]

以下は私のコードです:

.globl main
.data
prompt: .asciiz "0: exit, 1: enter string, 2: convert, 3: mean, 4: median, 5: display                 string, 6: display array: " #94 char long
enter:  .asciiz "Enter string: "
.text
main:
display: addi $v0, $v0, 4 #print prompt
        lui $a0, 0x1000  #grabbing prompt
        syscall

        addi $v0, $0, 5 #get integer
        syscall

        beq $v0, 0, rtn #if user type's 0, exit program
        nor $0, $0, $0 #nop

        beq $v0, 1, enterString #if user type's 1, enterString
        nor $0, $0, $0 #nop

enterString:
    addi $v0, $0, 4 #printing string
    lui $a0, 0x1000 #grabbing prompt
    addi $a0, $a0, 95 #grabbing enter
    syscall

    addi $v0, $0, 8 #grabbing input
    sw $a0, 0x10000100 #storing inpuit - this specific address is a requirement
    syscall

rtn: jr $ra

さて、これを実行すると、上記のエラーが発生します。しかし、その理由はよくわかりません。文字列が 32 ビットであることが原因でしょうか? 理由についての説明をいただければ幸いです。再度、感謝します!

4

1 に答える 1