TC中断问题

来源:百度知道 编辑:UC知道 时间:2024/06/20 08:54:07
int86(0x10, &r, &r);

这是TC中的一个中断函数。
小弟己知道 r 的类型为REGS

是想请教各位大大REGS中各项参数的意思。

如:r.h.ah = 2;
r.h.dl = x++;
r.h.dh = y;
我不是想问int86();这个函数

而是想问当它调用REGS 变量时,其己经付好的值,

如r.h.ah = 2; 这个2是什么意思? REGS类型里好几个变量,各是什么意思?

这是一个C中调用bios系统调用和dos系统调用的函数接口.
第一个参数是软中断号,
第二个参数是指向寄存器组的指针(作为参数的寄存器组),
第三个参数是作为返回值的寄存器组,

往往后两个参数用同一个寄存器组就可以了。

该函数的函数原形如下
int _Cdecl int86 (int intno, union REGS *inregs, union REGS *outregs);

int int86(int intr_num,union REGS *inregs,union REGS *outregs);
这个函数在bios.h 头文件中进行了说明,它的第一个参数intr_num 表示BIOS 调用类型
号,相当于int n 调用的中断类型号n,第二个参数表示是指向联合类型REGS 的指针,它
用于接收调用的功能号及其它一些指定的入口参数,以便传给相应的寄存器,第三个参数也
是一个指向联合类型REGS 的指针,它用于接收功能调用后的返回值,即出口参数,如调
用的结果,状态信息,这些值从相关寄存器中得到。