ショボ短歌会

こんにちは、最近DOSのプログラムを勉強し始めました。
環境はWindowsXPでやっています。ターボC(Ver2.0)使用 実際使用するのはDOSパソコン


割込みなんですが、BIOSタイマを使用し、1秒ごとのタイム割込みは出来たのですが、500ms毎の割込みを実現したい場合どのようにすればいいのかわかりませんでしたので質問させていただきました。



よろしくお願いします。

A 回答 (1件)

その1秒ごとの割り込みをどういうふうに実現しているかちょっと分からないのですが、


アセンブリを使えるなら、int 21h/AH=25hでint 08hの割り込みベクタを上書きし、
AL <- 0x34, OUT 0x43, AL
AL <- 割り込み周期の下位8bit, OUT 0x40, AL
AL <- 割り込み周期の上位8bit, OUT 0x40, AL
の順でポートを叩けばいけるかと思います。
今回は500ms毎の割り込みを実現したいので、割り込み周期は59659ticks。これの下位8bitは0Bh、上位8bitはE9hですかね。

http://www.computing.dcu.ie/~ray/teaching/CA296/ …
http://d.hatena.ne.jp/kobapan/20090506/1241618752
http://en.wikipedia.org/wiki/Programmable_interv …

この回答への補足

御回答ありがとうございます。
1秒の割り込みの実現方法ですが、
BIOSタイマを使用し実現を行っています。

BIOSには、毎秒18.2回カウントアップするカウンタ値の取得・設定の関数が有りますので
それを利用しました。厳密に言うとmain関数内で無限ループの中でカウンタ値を取得し、IF文等で
1秒割り込みを実現しています。

補足日時:2013/06/20 13:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!