1

5つの空のレジスタを使用できます。それらはゼロに設定されています。上記の番号にレジスタを効率的に設定したい。

AND R1, R1, #0 ; 
ADD R1, R1, x8000

「x8000」は、レジスタに入力しようとしている数値の 16 進数です。add 命令の即値として 5 桁の 2 進数しか渡せないため、上記のコードは機能しなかったと思います。これらは後で 16 ビットにゼロ拡張されます。したがって、16 ビットの数値を渡そうとしても機能しません。これは私が取り組んでいるプログラムの小さな部分です。

4

1 に答える 1

1

そうです、ADDi (immediate) を使用すると、レジスタに追加するときに -16 から 15 までの数値しか使用できません。

レジスターに必要な数値が入るまで ADDi コマンドを繰り返し使用するか (推奨されません)、メモリーから定数をロードすることができます。

.orig x3000

MAIN
AND R1, R1, #0      ; Clear R1
LD R2, VAR_1        ; Load x8000 into R2
ADD R1, R1, R2      ; R1 = R1 + R2

HALT
; Variables
VAR_1   .FILL x8000

.END
于 2015-04-22T22:04:09.880 に答える