BCB中利用__emit__函數可以直接將二進制程序代碼嵌入程序中,這樣就可以實現一些底層的操作。由於直接操作系統底層,這種方法可能會導致系統的不穩定。
下面是利用__emit__函數讀寫硬件端口的方法。
//讀端口
//port參數為輸入端口地址,value為返回值.
unsigned char __fastcall inportb(unsigned short int port)
{
unsigned char value;
__emit__(0x8b,0x95,&port); //把端口地址送到EDX寄存器中
__emit__(0x66,0xec); //從端口中讀入數據到AL寄存器中
__emit__(0x88,0x85,&value); //把AL寄存器中的值輔給value
return value;
}
//---------------------------------------------------------------------------
//寫端口
//port參數為輸出端口地址,value參數為輸出值
void __fastcall outportb(unsigned short int port,unsigned char value)
{
__emit__(0x8b,0x95,&port); //把端口地址送到EDX寄存器中
__emit__(0x8a,0x85,&value); //把value送到AL寄存器中
__emit__(0x66,0xee); //把AL寄存器中的值寫入端口
}