1

プロテクト モードのベア x86 (OS なし) で実行する C プログラムがあります。プログラムの実行を一定時間遅らせる必要があります。現在、私はこれをやっています:

for(p=0; p<1000000; ++p) asm("pause");

しかし、これは非常に間違っているように見えます (遅延は発生しますが、明らかに、その期間を実際に制御することはできません。「一時停止」の長さは定義されていません)。

さて、私はそのような低レベルのものについてはあまり経験がなく、解決策をネットで検索してきましたが、これまでのところ、pmode では動作しない BIOS 割り込みに関係することがわかった唯一のものです (または、私はと言われました)。

では、保護モードで実行を遅らせるにはどうすればよいでしょうか?

4

1 に答える 1

4

遅延を実装する一般的な方法は、システム タイマー (x86 では PIT (Programmable Interval Timer) とも呼ばれる) を使用して割り込みを生成することです。システム タイマー (ハードウェア IRQ0) を設定して、一定時間後に割り込みを発生させ、割り込みハンドラーを記述して、割り込み時にレジスタまたはフラグを設定し、実行を遅らせる必要がある場合は、レジスタまたはフラグをループします。割り込みハンドラが設定します。

于 2011-07-12T21:31:23.100 に答える