2016-11-10 15 views

答えて

2

int 21hまたはint 21を意味しますか? int 21 (int 15h)"AT Extended Services/APM"です。

int 21h (int 33)は、DOS interruptsのいずれかです。

IIRCのemu8086は、サービスと割り込みの限定されたサブセットのみをサポートしているので、int 21hを意味すると思います(私はint 15hがemu8086によってサポートされないと思います)。

このような誤植に注意してください。間違った番号に気付く前に、数分間デバッグする可能性があります。

int #nを呼び出すときのレジスタの機能は、その割り込み用にインストールされたハンドラによって定義されます。 DOS 21hサービスにはいくつかのサブ機能があります。どちらを呼び出すかはahに値で定義します。これは変更することはできませんが、DOSコードでハードワイヤードになっています。

呼び出しコードを変更して、目的の割り込みハンドラが期待するとおりにレジスタを準備する必要があります。

(またはあなたが、あなたはどのレジスタに入るかを指定しますが、独自の割り込みハンドラを作成することがemu8086のユーザーが実行したいと思う何かのような音はありません、もちろん、独自の割り込みハンドラを提供することができます)


例「stdoutに文字出力」にahからの値を使用する方法のサービス:あなたがすることはできません

mov ah,'X' ; character value in ah 
; how to use it with: 
; int 21h, ah=2 (Character output), dl = char (as defined by DOS) 
mov dl,ah ; move character value into dl (before setting ah with 2) 
mov ah,2 ; number of requested "Character output" service 
int 21h  ; call the DOS service 
関連する問題