제 8.3.2 장 학습내용 C 언어에서의 인터럽트 사용 레지스터를 위한 자료구조 인터럽트를 수행하기 위한 명령어 인터럽트 호출명령 예
인터럽트를 사용하기 전에 DOS.H * Turbo-C 와 MS-C 의 header file * 인터럽트 호출에 필요 * #include 명령을 이용
자료구조 WORDREGS * 16비트 레지스터를 접근 BYTEREGS * 8비트 레지스터를 접근 SEGREGS * 세그먼트 레지스터를 이용
레지스터 구조체(1) struct WORDREGS { unsigned int ax, bx, cx, dx, si, di, cflag, flag; }; struct BYTEREGS { unsigned char al, ah, bl, bh, cl, ch, dl, dh;
레지스터 구조체(2) union REGS { struct WORDREGS x; struct BYTEREGS h; }; sturct SREGS { unsigned int es; unsigned int cs; unsigned int ss; unsigned int ds;
변수 선언 선언 * union REGS reg; * struct SREGS segreg; 선언 후 * 구조체 변수와 같이 이용
인터럽트 명령어(1) int int86 ( int intno, union REGS *inregs, union REGS *outregs ); int int86x ( int intno, union REGS *inregs, union REGS *outregs, struct SREGS *segregs );
인터럽트 명령어(2) int intdos ( union REGS *inregs, union REGS *outregs ); int intdosx ( union REGS *inregs, union REGS *outregs, struct SREGS *segregs );
명령어 변수 intno -> 인터럽트 번호 inregs -> 인터럽트 호출에 필요한 레지스터의 데이터 값 outregs -> 인터럽트 호출한 결과에 대한 레지스터의 값 segregs -> 세그먼트 주소값
C 언어 속의 인터럽트 #include <stdio.h> #include <dos.h> union REGS reg; main() { static char mesg1[] = “I like Computer\r\n$”; mesg2[] = “Do you like Computer?$”;
C 언어 속의 인터럽트 reg.x.dx = (int)mesg1; reg.h.ah = 9; int86(0x21, ®, ®); reg.x.dx = (int)mesg2; intdos(®, ®); } I like Computer do you like computer?
제 8.3.2 장 요약 레지스터를 위한 자료구조가 header file 로 정의 됨 변수 선언 후에 인터럽트 프로그램 사용 인터럽트 명령어 * int86 * int86x * intdos * intdosx