MK_FP()設置一個遠指針的宏
原形:void far *MK_FP(unsigned seg,unsigned ofs)
功能:通過段值(seg)和偏移量(ofs)建立一個遠指針
返回值:遠指針
頭文件:dos.h
movedata()拷貝數據函數
原形:void movedata(unsigned srcseg,unsigned srcoff,unsigned dstseg,unsigned dstoff,size_t n)
功能:從原地址(srcseg:srcoff)拷貝n個字節的數據到目標地址(dstseg:dstoff)。
頭文件:mem.h、string.h
_open()打開一個文件進行讀寫的函數
原形:int _open(path,oflags)
char *path;//已建立文件的路徑名
int oflags;//方式
功能:打開由path指定的文件,返回文件的句柄
返回值:0(正常結束);-1(錯誤)
頭文件:fcntl.h、io.h
open()打開文件進行讀寫的函數
原形:int open(const char *path,int access[,unsigned mode])
使用方法:文件句柄=open(\"文件名\",打開模式|打開模式);
功能:打開path指定的文件,根據access指定的模式值讀寫。
access模式:
O_RDONLY 以只讀方式打開
O_WRONLY 以只寫方式打開
O_RDOWR 以讀寫方式打開
以上標志只能使用一個,以下可以用|組合使用
O_NDELAY
O_APPEND 若置位,每次寫操作前都使文件指針指到文件末尾
O_CREAT 若文件不存在則創建
O_TRUNC 若文件已存在,則將文件長度截為0
O_EXCL 只和O_CREAT一起使用,若文件已經存在,返回錯誤代碼
O_BINARY 以二進制方式打開
O_TEXT 以文本方式打開
如果使用了O_CREAT方式,則需要提供參數mode
(S_IWRITE可寫;S_IREAD可讀;S_IREAD|S_IWRITE可讀寫)
返回值:文件句柄(成功時);-1(失敗時)。
成功時,文件指針指向文件頭。
頭文件:fcntl.h、io.h
outport()輸出一個字到端口中的函數
原形:void outport(int portid,int value)
調用方式:outport(0x端口號,要輸出的字);
功能:往指定端口地址輸出一個字。
頭文件:dos.h
outportb()輸出一個字節到端口中的函數
原形:void outportb(int portid,unsigned char value)
調用方式:outportb(0x端口號,要輸出的字節);
功能:往指定端口地址輸出一個字節。
附:PC I/O地址分配
PC只用了10位地址線(A0-A9)進行譯碼,其尋址的范圍為0H-3FFH,共有1024個I/O地址。這1024個地址中前半段(A9=0,范圍為0H-1FFH)是屬于主機板I/O譯碼,后半段(A9=1,范圍為200H-3FFH)則是用來擴展插槽上的I/O譯碼用。
I/O端口功能表
———————————————————————————
I/O地址 功能、用途
———————————————————————————
0 DMA通道0,內存地址寄存器(DMA控制器1(8237))
1 DMA通道0, 傳輸計數寄存器
2 DMA通道1,內存地址寄存器
3 DMA通道1, 傳輸計數寄存器
4 DMA通道2,內存地址寄存器
5 DMA通道2, 傳輸計數寄存器
6 DMA通道3,內存地址寄存器
7 DMA通道3, 傳輸計數寄存器
8 DMA通道0-3的狀態寄存器
AH DMA通道0-3的屏蔽寄存器
BH DMA通道0-3的方式寄存器
CH DMA清除字節指針
DH DMA主清除字節
EH DMA通道0-3的清屏蔽寄存器
FH DMA通道0-3的寫屏蔽寄存器
19H DMA起始寄存器
20H-3FH 可編程中斷控制器1(8259)使用
40H 可編程中斷計時器(8253)使用,讀/寫計數器0
41H 可編程中斷計時器寄存器
42H 可編程中斷計時器雜項寄存器
43H 可編程中斷計時器,控制字寄存器
44H 可編程中斷計時器,雜項寄存器(AT)
47H 可編程中斷計時器,計數器0的控制字寄存器
48H-5FH 可編程中斷計時器使用
60H-61H 鍵盤輸入數據緩沖區
61H AT:8042鍵盤控制寄存器/XT:8255輸出寄存器
62H 8255輸入寄存器
63H 8255命令方式寄存器
64H 8042鍵盤輸入緩沖區/8042狀態
65H-6FH 8255/8042專用
70H CMOS RAM地址寄存器
71H CMOS RAM數據寄存器
80H 生產測試端口
81H DMA通道2,頁表地址寄存器
82H DMA通道3,頁表地址寄存器
83H DMA通道1,頁表地址寄存器
87H DMA通道0,頁表地址寄存器
89H DMA通道6,頁表地址寄存器
8AH DMA通道7,頁表地址寄存器
8BH DMA通道5,頁表地址寄存器
8FH DMA通道4,頁表地址寄存器