0

最近、単純な MSDOS ゲームをコーディングするのは面白いだろうと決心しました。言うまでもなく、キーボード イベントを処理するためのコードが必要です。

これは私がテストのために思いついたものです:

int i, c = 0;
for ( i = 0; i < 10; i++ )
{
    asm
    (
        "mov $0x00, %%ah         \n"
        "mov $0x00, %%al         \n"
        "int $0x16               \n"
        //"jnz keydn             \n"
        //"mov $0x00, %%al       \n"
        //"keydn:                \n"
        "movw %%ax, (%0)         \n"
            : "=r"(c)
    );

    printf( "%d\n", c & 0xFF );
}

コードは、キーが押されるのを待ってから、文字の ASCII 値を出力することになっています。backspaceまたはのようなキーを押さない限り、すべてが期待どおりに機能しますesc-その後、セグメンテーション違反が発生します。

ここに画像の説明を入力

私はアセンブリに慣れていませんが、実際にこのエラーの原因がわかりません。

でコンパイルしdjgpp、実行可能ファイルを実行しますDosBox

すべては、ここで提供される情報に基づいています。

前もって感謝します!:)

4

1 に答える 1