アセンブリ言語では、ハードウェア割り込みではないDOS割り込みINT 21hがあります。アセンブリでカスタム割込みを作成することはできますか?
私自身の割り込みを記述して呼び出すことが可能かどうか疑問に思っていました。
可能であれば、リンクや方法を提案してください。
アセンブリ言語では、ハードウェア割り込みではないDOS割り込みINT 21hがあります。アセンブリでカスタム割込みを作成することはできますか?
私自身の割り込みを記述して呼び出すことが可能かどうか疑問に思っていました。
可能であれば、リンクや方法を提案してください。
はい、独自の相互作成ハンドラを作成して、いつでも呼び出すことができます。 割り込みハンドラを指すように割り込みベクタ(アドレス0000:0000から始まる)を設定する必要があります。
各ハンドラへのポインタは4バイト(オフセットとセグメント)を消費します。たとえば、INT 22hの割り込みハンドラを設定する場合は、ハンドラをポイントする位置0000:0088hのベクトルを更新します。
Ralph Brown's interrupt listにチェックを入れて、未使用の割り込み番号(ハードウェアの入力によって使用されていないもの)を確認してください。
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
私はそれを得るが、INT 21Hのファイル書き込み機能のようなものは、それを可能な限りプログラミングしている。また、割り込みの設定例を挙げることができます。大いに助けになるだろう。 –
@TotalAnimeImmersion:はい、あなたは割り込みハンドラで何でもできます。ハンドラの設定例を追加しました。 – gusbro
ありがとうございました。本当に助けになった。 –
関連:http://stackoverflow.com/questions/3392831/what-happens-in-an-interrupt-serviceここ
は割り込み22Hのためのハンドラを設定する方法の例を行きます - ルーティン –