0

プロジェクトに取り組んでいます。教授からいくつかのテストを含む.zipファイルが提供されたので、プロジェクトが正しく機能しているかどうかを確認できます。私たちはc++で小さなカーネルを構築しています。

とにかく、キーボード割り込みを待機するスレッドがあり(event9.wait())、その後、文字をバッファに入れるか、プログラムを終了する必要があります(「esc」を押した場合)。

while (!theEnd) {

        event9.wait();

        status = inportb(0x64); // reading status reg. from 64h
        while (status & 0x01){ //while status indicates that keys are pressed
                ....

確認したところ、定期的に割り込みを待っていると思います。status&0x01が0であるため、問題が発生します。

次に、0x60から文字を取得するコードの一部を取得しましたが、問題なく機能しました。

テストファイルのコードに何か問題がありますか?はいの場合、何ですか?コードが正しい場合、何が問題を引き起こす可能性がありますか?

テストファイルを変更することはできますが、変更する正当な理由が必要です。そして今のところ私が持っている唯一の理由はそれが機能しないということです。

*注:コメントはセルビア語から翻訳されていますが、正しく翻訳されていることはほぼ間違いありません。

4

1 に答える 1

2

status & 0x01は完全に大丈夫だと思います。ただし、ポート0x60を読み取った後、ポートを再度読み取る必要があります。コードの後半でそれを行う可能性がありますが、私は個人的にコードを次のように書き直します。

    while ((status = inportb(0x64)) & 0x01){ //while status indicates that keys are pressed
            ....

この場合、ループ内でポート0x64を再度読み取らないように注意してください。

于 2013-01-26T19:43:22.540 に答える