私はしばらくこの質問に苦労しており、助けが必要です。
この質問は、EASY68K シミュレータ プロセッサに基づいています。EASY68K シミュレータの T121 プロセッサ命令セットを使用して、次の質問に答えてください。
図 Q3 のプログラムを書き直して、一連の整数を加算するサブルーチンを含めます。サブルーチンは、ループの機能を実行する必要があります。サブルーチンは、メイン プログラムのすぐ下のメモリ空間を占有します。サブルーチン アドレス ラベルとして SUM を使用します。
図 Q3
ORG $1000
START MOVE #$2000,A0
MOVE.B #$08,D0
MOVE.L #$0,D1
LOOP ADD.B (A0)+,D1
SUB.B #$01,D0
BNE LOOP
LSR #$03,D1 ; Logical Shift Right by 3 places
MOVE.B D1, $2050
STOP #$2700
テスト データを初期化して使用します: 1、2、3、…、質問 3(b) で推定されるループ カウンターまで。プログラムの開始前に、すべてのデータ レジスタの内容がゼロに設定されていると仮定します。
これが私の仕事です。この質問への取り組み方がわからないため、正しく行っているかどうかはわかりません。
ORG $1000
START MOVE #$2000,A0
MOVE.B #$08,D0
MOVE.L #$0,D1
BSR SUM ;BRANCH SUMBROUTINE
STOP #$2700
SUM ADD.B (A0)+,D1
SUB.B #$01,D0
BNE SUM
LSR #$03,D1 ; Logical Shift Right by 3 places
MOVE.B D1, $2050
RTS
ORG $2000
DATA DC.B $1,$2,$3,$4,$5,$6,$7,$8 ; Define constant.
END START