プログラムの概要: 1 ~ 26 の数字を入力し、対応する大文字にも数字を付けます
私の論理: .byte と chars を使用して、配列型の「構造」を設定します。配列を通過するカウンターがあります。カウンターが入力数値と同等になると、配列の現在のポイントが出力されます。
これは宿題なので、答えを「微調整」しようとしているわけではありませんが、ガイダンスは非常に役立ちます.
これが、私が間違っていると思う理由です。アドレスに 1 を追加すると、何らかの理由でエラーが発生します。しかし、4を追加するとうまくいきますか?char は正しい 1 ビットのみを使用することになっていますか? 配列内のintのアドレスにインデックスを付けるときは、4である必要があることを理解しています.
.data
prompt: .asciiz "Enter the value of n here: "
larray: .byte 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
.globl main
.text
main:
la $t1, larray # Loads Array addresss into $t1
li $v0, 4 # System call for Print String
la $a0, prompt # Load address of prompt into $a0
syscall # Print the prompt message
li $v0, 5 # System call code for Read Integer
syscall # Read N into $v0
move $t3, $v0
li $t0, 0 # Loads int 0 into $t0
loop:
beq $t0, $t3, end # Break
lw $a0, ($t1) # Loads current pointer
addi $t0, $t0, 1 # Adds one to $t0 (Counting up +1)
addi $t1, $t1, 1 # Advances to next address in the array
j loop
end:
li $v0, 11 # Print at current index
syscall
li $v0, 10 # return control to system
syscall
別の方法で char にアクセスする方法について調査しましたが、ハードコーディングする必要があるため、この方法を実装できるとは思いませんか? リンク: これは私が見つけたスタック リンクです。