happylyon
驱动牛犊
驱动牛犊
  • 注册日期2005-05-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1172回复:0

PCI在C语言环境下的驱动程序??

楼主#
更多 发布于:2005-05-30 09:42
小弟在C语言下编写PCI设备的驱动程序,参考书上其中有一段:
#include<dos.h>
#include<stddef.h>
#include<amcc.h>
int pci_bios_present(byte *hardware_mechanism,
            word *interface_level_version,
            byte *last_pci_bus_number)
{
int ret_status;
byte bios_present_status;
dword pci_signature;
word ax,bx,cx,flags;
_AH=PCI_FUNCTION_ID;
_AL=PCI_BIOS_PRESENT;
geninterrup(0x1a);
ax=AX;
bx=BX;
cx=CX;
pci_signature=_EDX;
flags=_FLAGS;
bios_present_status=HIGH_Byte(ax);
if((flags&CARRY_FLAG)==0)
 {
 if((pci_signature&0xff)==\'p\'&&
   ((pci_signature>>8)&0xff)==\'c\'&&
   ((pci_signature>>16&0xff)==\'i\'&&
   ((pci_signature>>24)&0xff)==\' \'))
   {
   ret_status=SUCCESSFUL;
     if(hardware_mechanism!=NULL)
     { *hardware_mechanism=LOW_Byte(ax);
*interface_level_version=bx;
*last_pci_bus_number=LOW_Byte(cx);
     }
   }
 }
else ret_status=NOT_SUCCESSFUL;
}
小弟有若干问题不解,希望论坛上的高手能为小弟解惑!
1 对于其中_AH,_AL,_FLAGS等寄存器在哪个库函数中才能找到初始化啊?好象调用的库函数中没有对寄存器的定义
2 geninterrup(0x1a);这个中断调用函数C语言中不认,应该怎么应用?
游客

返回顶部