文字列へのポインターの配列を作成しようとしていますが、期待どおりに動作しません。配列には、アドレスではなく文字列の内容が含まれます。ソースコードは次のとおりです。
showhelp:
.data
help1: .asciiz "\nHELP FOR HW4_2b\n"
help2: .asciiz "Purpose: Displays the output from a one-bit full adder with inputs provided on the command line.\n"
help3: .asciiz "HW4_2b c a b\n"
help4: .asciiz "c\t\tThe carry in bit: 0|1\n"
help5: .asciiz "a\t\tOne of the bits to be added: 0|1\n"
help6: .asciiz "c\t\tThe other bit to be added: 0|1\n"
helpar: .word help1, help2, help3, help4, help6
helpsiz:.word 6
.text
lw $t0, helpsiz # load size of help array
lw $t1, helpar # load address of address of first help string
nxthlp: la $a0, ($t1) # specify string to print
li $v0, 4 # specify print string
syscall # print it
addi $t1, $t1, 4 # increment pointer to next string
subi $t0, $t0, 1 # decrement counter
bgtz $t0, nxthlp # if not last string loop
jr $ra # return
これを実行すると、次の出力が得られます。
HELP FOR HW4_2b
P FOR HW4_2b
R HW4_2b
4_2b
rpose: Displays the output from a one-bit full adder with inputs provided on the command line.
ご覧のとおり、helpar: には、アドレスではなく、連結されたすべての文字列が含まれています。また、「la $a0, ($t1)」の間接アドレス指定は、$t1 に含まれるアドレスの内容ではなく、$t1 の内容をロードしています。
私は何を誤解していますか?
ありがとう、ケビン