기능 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 분야 또는 송이,\n%d송이,\n%d 바이트 또는 분야,
\n%d 총 송이",
outregs.x.ax,outregs.x.bx,
outregs.x.cx, outregs.x.dx);
getch();
}
그리고 프로그램의 산출은 이것 같이 일 것이다:
1 분야 또는 송이,
1933의 송이,
512의 바이트 또는 분야,
2843의 총 송이 |
|