幾個常用IO埠讀寫函式

2021-04-19 05:04:28 字數 2263 閱讀 3286

dos中,幾個常用埠讀寫函式:

int inport(int prot);     //從指定的輸入埠讀入乙個字,並返回這個字

int inportb(int port);  //從指定的輸入埠讀入乙個位元組,並返回這個位元組

void outport(int port,int word); //將字word寫入指定的輸出埠port

void outportb(int port,char byte); //將位元組byte寫入指定的輸出埠port

這些功能可以通過巨集定義實現:

對於io空間對映在儲存空間的結構,輸入輸出處理

#define inp(port) (*((volatile byte *)(port)))

#define inpw(port) (*((volatile word *)(port)))

#define inpdw(port) (*((volatile dword *)(port)))

#define outp(port,val) (*((volatile byte *)(port))=((byte)(val)))

#define outpw(port, val) (*((volatile word *)(port))=((word)(val)))

#define outpdw(port, val) (*((volatile dword *)(port))=((dword)(val)))

對於io空間對映在儲存空間的結構,輸入輸出處理

#define inp(port)  (*((volatile byte *) (port)))

dos下讀埠。在dos下就是讀記憶體,讀記憶體就是取某乙個位址的內容,比如讀n埠就是讀取記憶體n處的內容,

(*((volatile  byte  *)  (port)))

其實就是

*(unsigned char *)port  

在bc3.1自帶的dos.h中,定義如下

#ifndef _port_defs

unsigned        _cdecl inport ( unsigned __portid );

unsigned char   _cdecl inportb( unsigned __portid );

unsigned        _cdecl inpw   ( unsigned __portid );

int             _cdecl inp    ( unsigned __portid );

#endif

在vc的c執行庫中,說明如下:

outputs a byte (_outp), a word (_outpw), or a double word (_outpd) at a port

int _outp(

unsigned short port,

int databyte

);unsigned short _outpw(

unsigned short port,

unsigned short dataword

);unsigned long _outpd(

unsigned short port,

unsigned long dataword

);vc中,outputb和inportb對應的函式為_inp和_outp。使用時需要標頭檔案。建議使用_inp和 _outp,而不是使用inp和outp。因為_inp和_outp在debug和release都可以使用,而inp和outp只能用於release 設定。如果在 debug設定時使用inp和outp,編譯時不會錯,但會產生鏈結錯誤如下:

error link2001:unresolved external symbol _inp

error link2001:unresolved external symbol _outp

fatal error lnk1120:2 unresolved externals.

以上方法只適用於win9x,在windows nt/2000下任何硬體i/o操作均需要通過裝置啟動程式。

可以借助ddk(http://www.microsoft.com/ddk)編寫裝置驅動程式。當然你也可以購買現成的軟體,如http: //china.zealsoft.com/cn/ntport/。windows的開發同dos開發有很大的不同。如果你設計的是控制台程式,那麼整個 程式執行起來更dos程式差不多,這時你可以象在 dos中一樣使用標準輸出函式。如果你設計的是圖形介面的程式,那麼所有c和c++的標準輸入/輸出函式都不再能使用了。可以使用textout或 drawtext輸出文字。

常用檔案IO函式

include include include int open const char pathname,int flags int open const char pathname,int flags,mode t mode 功能 開啟檔案,如果檔案不存在則可以選擇建立。引數 pathname 檔...

常用的幾個函式

隨機數的產生 大多數情況下使用函式 srand 和 rand 即可搞定,這兩個函式包含於標頭檔案 中。為了取得可變的隨機碼,必須在使用rand 前呼叫srand 函式來取得隨機種子,這樣編譯後的程式才在每次執行時可以產生不同的隨機數。例子 srand unsigned time null 一般取系統...

Oracle 幾個常用函式

1.判斷字段內容長度 length 欄位名 10 2.沒有值用 替代 nvl 欄位名,3.上面兩個結合 length nvl 欄位名,10 4.case when 用法 case when length nvl 欄位名,10 then 欄位名 else null end 別名 說明 當字段長度為10...