機能intdosおよびintdosxはdos指定dos機能を実施するために割り込み0x21を実行する。 inregs->h.ahの価値は実施されるべきdos機能を指定する。 機能intdosxはまたsegregsを- >dsおよびsegregs -作用し、dsを元通りにするdosを実施する前の対応する記録への価値によってが>esコピーする。
機能のこの特徴はどの区分が機能実行に使用するべきであるか遠いポインターを使用するか、または大きいデータ記憶モデルが指定するプログラムを可能にする。 intdosx機能を使うとデフォルトのデータセグメントと別のdsの価値を取ったりおよび/またはESの議論を取るdos機能を実施できる。
機能は両方ともdosの関数呼出しの完了の後で運送旗が置かれれば斧の価値を戻し、(outregs - > x.cflag! 間違いが生じたことを= 0)、示す。
割り込み0x21が戻った後機能はoutregs、outregsのx.cflag分野への運送旗の状態に現在の記録の価値をコピーし、8086旗の価値はoutregsのx.flags分野に登録する。 inregsおよびoutregsは両方同じ構造を指すことができる。 私達をこれらの機能の例を見ることを許可しなさい。
intdos機能の使用の例は次に与えられた。 このプログラムはだらしない(1.44Mb、フロッピー・ディスク3つの½のインチ)ディスク・ドライブについての指定情報を得る。 このプログラムはフロッピー・ディスクの割振り情報を提供する。
/* ディスク使用法のための得ドライブ割振り情報 */
#include <dos.h> /* intdos ()および連合REGSのため */
#include <stdio.h> /*のため printf() */
union REGS inregs, outregs;
void main()
{
inregs.h.ah = 0x36; /* ディスクに自由空間機能数を得なさい */
inregs.h.dl = 0x01; /* ドライブ A: */
intdos(&inregs, &outregs);
printf("%d sectors/cluster,\n%d clusters,\n%d bytes/sector,
\n%d total clusters",
outregs.x.ax,outregs.x.bx,
outregs.x.cx, outregs.x.dx);
getch();
}
そしてプログラムの出力はこれのようである:
1 sectors/cluster,
1933 clusters,
512 bytes/sector,
2843 total clusters |
|