16ビットマイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第23回]
●Trace Flag(2)
TF(Trace Flag)はフラグレジスタのビット8です。
TFは通常は0です。
TFをセットする命令はありません。
どうするかといいますと。
ケースバイケースで色々な方法が考えられます。
これはその一例です。
PUSHF
POP AX
OR AH,01
PUSH AX
これでOKです。
ただし、このあとPOPFはちょっとまずいです。
ここは要注意です。
なぜか?
前回のMANUALのTFの説明をよく読むとその答えが書いてあります。
フラグレジスタのTFが1のとき、命令を実行後にTRACE割込みが発生してしまいます。
つまりPOPFの次の命令で割込みがおきてしまうのです。
これはまずいでしょう。
この目的としてはPOPFは使えません。
このことについてはそもそもの手順を考えるとわかってきます。
まずTRACE割込みが発生してシングルステップルーチンが実行されたところから考えてみます。
シングルステップルーチンの終わりは、割込みによって保留されていたユーザプログラムの次の命令に戻らなければなりません。
ということになると、戻るにはIRETしかありませんでしょう。
前回の説明のTFのところだけを切り取って再掲します。
ここにIRETが出てきています。
なぜIRETなのか?
まあ、割込みからの復帰なのでIRETなのですけれど。
IRETとRETはどこが違うのか?
TRACEについてはIRETでなければならないわけがあります。
説明の途中ですが、時間がなくなってしまいました。
次回に続きます。
16ビットマイコンボードの製作[第23回]
2018.5.22upload
前へ
次へ
ホームページトップへ戻る