0
私はアセンブリを学んでおり、私は 'data_type'で定義した値を合計するプログラムを書いています。アセンブリ初心者:DCDの値の数と同じ変数を設定しますか?
Atm私は、変数 'num'を 'data_type'の値の数量に等しく設定して、ループがそれらを合計するようにしなければなりません。
私はこれを行うより良い方法があるのだろうかと思っていましたか?
または、変数 'num'を 'data_type'の値の数量を想定して動的に宣言する方法がある場合は、
ありがとうございます!
AREA Sum loop, CODE, READONLY
ENTRY
num EQU 5
Reset_Handler
LDR r1, =data_values
MOV r5,#num
loop
LDR r2,[r1],#4
ADD r3,r3,r2
SUBS r5,r5,#1
BNE loop
data_values
ALIGN 4
DCD 1, 1, 1, 1, 1 ; example values
END
あなたのアセンブラについてはわかりませんが、1) 'data_values'が整列されていないとどうなりますか?他のアセンブラと同じように動作する場合、 'data_values'シンボルはアライメントされていないアドレス値を持ち、' DCD'は整列されたデータを定義するため、コードは間違ったバイトのデータに対してアライメントされていないアクセスを行います。私はあなたがそれらの2つを交換して、最初に整列させ、次に象徴的なラベルを定義するべきだと考えます。 2) 'BNE'の後に何が起こるのですか?あるいは、デバッガでこれを実行していますか?定義されたコードの外に出させないでください。 – Ped7g
よろしくお願いします、今すぐ交換してください。 Keilツールを使用する。 私はちょうど学習の練習であるので、デバッガ内のBNEに実行しています。上記の質問をどのように達成するための推奨事項がありますか? – ohkneel