函式簡介
函式名: int86
功 能: 通用8086軟中斷接口
用 法: int int86(int intr_num, union REGS *inregs, union REGS *outregs);
程式例:
#include
#include
#include
#define VIDEO 0x10
void movetoxy(int x, int y)
{
union REGS regs;
regs.h.ah = 2; /* set cursor postion */
regs.h.dh = y;
regs.h.dl = x;
regs.h. bh = 0; /* video page 0 */
int86(VIDEO, ®s, ®s);
}
int main(void)
{
clrscr();
movetoxy(35, 10);
printf("Hello\n");
return 0;
}
struct WORDREGS
{
unsigned int ax,bx,cx,dx,si,di,cflag,flags;
};
struct BYTEREGS
{
unsigned char al,ah,bl,bh,cl,ch,dl,dh;
};
union REGS
{
struct WORDREGS x;
struct BYTEREGS h;
};
中斷號
x86中斷直接系統服務(Direct System Service)
INT 00H - “0”作除數
INT 01H - 單步中斷
INT 02H - 非禁止中斷(NMI)
INT 03H - 斷點中斷
INT 04H - 算術溢出錯誤
INT 05H - 列印螢幕和BOUND越界
INT 06H - 非法指令錯誤
INT 07H - 處理器擴展無效
INT 08H - 時鐘中斷
INT 09H - 鍵盤輸入
INT 0BH - 串列通信口(COM2:)
INT 0CH - 串列通信口(COM1:)
INT 0DH - 並行通信口(LPT2:)
INT 0EH - 磁碟驅動器輸入/輸出
INT 0FH - 並行通信口(LPT1:)
INT 10H - 顯示服務(Video Service)
INT 11H - 讀取設備配置
INT 12H - 讀取常規記憶體大小(返回值AX為記憶體容量,以K為單位)
INT 13H - 直接磁碟服務(Direct Disk Service)
INT 14H - 串列口服務(Serial Port Service)
INT 15H - 雜項系統服務(Miscellaneous System Service)
INT 16H - 鍵盤服務(Keyboard Service)
INT 17H - 並行口服務(Parallel Port Service)
INT 18H - ROM BASIC
INT 19H - 重啟動系統
INT 1AH - 時鐘服務(Clock Service)
INT 1BH - CTRL+BREAK處理程式
INT 1CH - 用戶時鐘服務
INT 1DH - 指向顯示器參數表指針
INT 1EH - 指向磁碟驅動器參數表指針
INT 1FH - 指向圖形字元模式表指針
DOS中斷
INT 20H - 終止程式運行
INT 21H - 字元功能調用、目錄控制、檔案操作、系統功能、進程控制、時間和日期功能
INT 22H - 終止處理程式的地址
INT 23H - Ctrl+C處理程式
INT 24H - 致命錯誤處理程式
INT 25H - 讀磁碟扇區(忽略邏輯結構)
INT 26H - 寫磁碟扇區(忽略邏輯結構)
INT 27H - 終止,並駐留在記憶體
INT 28H - DOS空閒
INT 2FH - 多重中斷服務
INT 33H - 滑鼠功能中斷