4

標準のキーボード割り込みを、変数をデクリメントするカスタム割り込みに置き換える簡単なプログラムを作成しようとしています。ただし、古いハンドラーを呼び出さないと機能しません。これが私の割り込みハンドラです:

handler proc
  push ax
  push di
  dec EF
  ;pushf      ;when these to instructions commented keyboard interrupts handling hangs
  ;call [OLD]
  mov al,20h
  out 20h,al
  pop di
  pop ax
  iret
handler endp

古いハンドラーを呼び出さずに動作させるには、ハンドラーでどのアクションを実行する必要がありますか?

4

2 に答える 2

1
  1. DS をスタックに保存し、プログラムに適切な値に設定してから、iret.

  2. この部分:

    mov al,20h
    out 20h,al
    

    割り込みを承認します。BIOS 割り込みハンドラーを呼び出す場合は、BIOS ハンドラーが行うため、これも行うべきではありません。

于 2012-05-07T11:06:32.937 に答える