1

数週間後に予定されている 68000 アセンブリ試験に備えるために、教科書から追加の宿題をしています。現在、スーパーバイザー モードで既に実行されているときにユーザー モードを開始する方法を尋ねる 4 つの質問があります。EORANDI、およびMOVEの命令でこれができることはわかっていますが、次の例がユーザーモードを開始するのに有効かどうか疑問に思っていました。

EOR D0,SR        ;SR is status register (is this the right way to address the SR?)

ANDI #1,SR       ;Starting user via ANDI

MOVEI, #1,SR     ;Starting user via MOVEI

上記の 3 つの指示は、既にスーパーバイザー モードでユーザー モードを開始するのに有効ですか?

最後の質問は、トレース モードに関するものです。私はこれで完全に迷っており、少しのガイダンスが必要です. 質問は次のとおりです。

アドレス $4000 のユーザー プログラムを、割り込みマスク レベル 5 のトレース モードで開始する方法を示します。

何かヒントを得ることができれば、とても感謝しています。ありがとうございました!

4

1 に答える 1

2

ああ、68000 プログラミングの古き良き時代。move.w #$2700,sr昨日のようにタイピングしたことを覚えています。

あなたは正しい軌道に乗っています。 EORIANDI、およびMOVEIすべてステータス レジスタを変更できます。ただし、即値を使用しようとする試み#1は間違っています。

これらのいずれかが機能するはずです:

eori #$2000,sr
andi #$dfff,sr
move #$2000,sr  ;Depends on what interrupt level you want.

あなたの質問の2番目の部分については、ヒントは次のとおりです。

move #$8500,sr
于 2014-11-28T19:57:40.633 に答える