10

アセンブリ言語では、ハードウェア割り込みではないDOS割り込みINT21hがあります。

自分で割り込みを書いて呼び出すことができるのではないかと思っていました。

可能であれば、リンクまたは方法を提案してください。

4

1 に答える 1

23

はい、独自の割り込みハンドラーを作成して、いつでも呼び出すことができます。独自の割り込みハンドラーを指すように、割り込みベクトル(アドレス0000:0000で開始)を設定する必要があります。

各ハンドラーへのポインターは4バイト(オフセットとセグメント)を消費するため、たとえばINT 22hの割り込みハンドラーを設定する場合は、位置0000:0088hの割り込みベクトルを更新してハンドラーをポイントします。

Ralph Brownの割り込みリストをチェックして、未使用の割り込み番号(ハードウェア割り込みで使用されていない少なくとも1つ)をチェックします。

割り込み22hのハンドラーを設定する方法の例を次に示します。

INITIALIZE: 
      XOR AX,AX
      MOV ES,AX
      CLI ; Disable interrupts, might not be needed if seting up a software-only interrupt
      MOV WORD PTR ES:[136], OFFSET INT22  ; setups offset of handler 22h
      MOV WORD PTR ES:[138], CS            ; Here I'm assuming segment of handler is current CS
      STI ; Reenable interrupts
      ; End of setup


INT22  PROC FAR
       ; Here goes the body of your handler
       IRET
INT22  ENDP
于 2012-09-17T17:36:24.173 に答える