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