アドレス0番地から配置されているx86CPUの割込みベクタテーブルには
タイプ0からタイプ255までの割込み先のアドレスがセグメント:オフセットの
形で4バイトずつセットされます
タイプ0からタイプ255までの割込み先のアドレスがセグメント:オフセットの
形で4バイトずつセットされます
そこで次の関数に割込みタイプと処理先の関数のアドレスを渡してテーブルに
セットしました。
セットしました。
/************************************************ * set_vect:割込みベクタセット * ************************************************/ void set_vect(int no, void(far *func)()) { long far *vector; vector=(long far *)(0x00000000+no*4); *vector=(long)func; }
ところがテーブルがセットされた後でもタイマ割込みがかかったとたん暴走してしまいます。
おそらく飛び先がおかしいのですが、考えてみればCPUはプロテクトモードで
動作しているわけで、ここにも修正がいりそうです
おそらく飛び先がおかしいのですが、考えてみればCPUはプロテクトモードで
動作しているわけで、ここにも修正がいりそうです