getdfree()讀取磁盤空閑空間的函數(shù)
原形:void getdfree(drive,dtable)
unsigned char drive;驅(qū)動(dòng)器號(hào)(0-當(dāng)前;1-A;2-B;...)
struct dfree
{
unsigned df_avail;//可使用的簇?cái)?shù)
unsigned df_total;//每個(gè)驅(qū)動(dòng)器的簇?cái)?shù)
unsigned df_bsec;//每個(gè)扇區(qū)的字節(jié)數(shù)
unsigned df_sclus;//每個(gè)簇的扇區(qū)數(shù)(出錯(cuò)時(shí)返回0xffff)
}*dtable;
功能:把由drive指定的關(guān)于驅(qū)動(dòng)器的信息返回到dtable
getdisk()讀取當(dāng)前磁盤驅(qū)動(dòng)器號(hào)函數(shù)
原形:int getdisk(void)
功能:取得當(dāng)前驅(qū)動(dòng)器號(hào)(0=A;1=B;....)
頭文件:dir.h
getenv()讀取環(huán)境變量的當(dāng)前值的函數(shù)
原形:char *getenv(const char *name)
用法:s=getenv(\"環(huán)境變量名\");
需先定義char *s;
功能:返回一給定的環(huán)境變量值,環(huán)境變量名可大寫或小寫。如果指定的變量在環(huán)境中未定義,則返回一空串。
頭文件:stdlib.h
getimage()將指定區(qū)域的位圖象存入內(nèi)存的函數(shù)
原形:void far getimage(int left,int top,int right,int bottom,void far *bitmap)
功能:將圖像(矩形區(qū)域)從屏幕拷貝到內(nèi)存,*bitmap指向內(nèi)存中存放圖像的區(qū)域。該區(qū)域的前兩個(gè)字節(jié)用于存放矩形的高和寬。
頭文件:graphics.h
getmaxx()返回屏幕上的X坐標(biāo)值的函數(shù)
原形:int far getmaxx(void)
功能:返回當(dāng)前圖形驅(qū)動(dòng)程序和圖形模式下的X坐標(biāo)值。
頭文件:graphics.h
getmaxy()返回屏幕上的Y坐標(biāo)值的函數(shù)
原形:int far getmaxy(void)
功能:返回當(dāng)前圖形驅(qū)動(dòng)程序和圖形模式下的Y坐標(biāo)值。
頭文件:graphics.h
getpixel()讀取像素顏色的函數(shù)
原形:unsigned far getpixel(int x,int y)
頭文件:graphics.h
getpsp()
原形∶unsigned getpsp(void)
功能∶使用DOS系統(tǒng)調(diào)用0x62,返回程序段前綴(PSP)的段地址
頭文件∶dos.h
gets()從標(biāo)準(zhǔn)輸入流stdio中讀取一字符串的函數(shù)
功能:將鍵盤上輸入的字符串立刻賦予字符串變量并顯示出來
調(diào)用方式:gets(字符串變量名)
注:需定義 char *字符串變量名;
gettime()讀取系統(tǒng)時(shí)間的函數(shù)
原形:void gettime(ptime)
struct time
{
unsigned char ti_min;
unsigned char ti_hour;
unsigned char ti_hund;//百分之一秒
unsigned char ti_sec;
};
struct time *ptime;
getvect()讀取中斷向量函數(shù)
原形:void interrupt(*getvect(int interruptno))
功能:讀入由interruptno(0-255之間)所指定的中斷向量值,并把該中斷向量值作為中斷函數(shù)的遠(yuǎn)指針返回。
返回值:指定中斷向量的當(dāng)前4字節(jié)值。
頭文件:dos.h
使用實(shí)例:oldfunc=getvect(5);
先定義void interrupt(*oldfunc)();
用后恢復(fù)setvect(5,oldfunc);
getx()返回當(dāng)前圖形方式下位置的X坐標(biāo)值的函數(shù)
原形:int far getx(void);
頭文件:graphics.h
gety()返回當(dāng)前圖形方式下位置的Y坐標(biāo)值的函數(shù)
原形:int far gety(void);
頭文件:graphics.h
imagesize()返回保存圖像緩沖區(qū)大小的函數(shù)
原形:unsigned far imagesize(int left,int top,int right,int bottom)
功能:確定保存圖像所需的存儲(chǔ)區(qū)大小。
返回值:返回存儲(chǔ)區(qū)的大小(字節(jié)),若所需內(nèi)存大于等于64K-1字節(jié),則返回0xffff(-1)。
頭文件:graphics.h
initgraph()顯示模式控制函數(shù)(初始化圖形系統(tǒng)函數(shù))
功能:把圖形適配器設(shè)置為一種圖形模式,將選擇的圖形驅(qū)動(dòng)程序(在BGI文件中)裝入到內(nèi)存。
調(diào)用方式:
void far initgraph(int far *driver,int far *mode,char far*path)
其中: *driver可以是數(shù)值(0-10),也可是符號(hào)值(DETECT、CGA、MCGA、EGA、EGA64、EGAMONO、RESERVED、HERCMONO、ATT400、VGA、 PC3270)。
*mode參數(shù)從圖形系統(tǒng)為各種常用的圖形適配器設(shè)置的圖形模式中(CGAC0、…、IBM8514HI--見頭文件graphics.h)選取。常用的有:VGAMED或1(640×350)(等效于BIOS的模式15)、EGAHI或1(640×350)等。
path指向的字符串為裝入驅(qū)動(dòng)程序的路徑。如果缺省路徑,驅(qū)動(dòng)程序在當(dāng)前目錄。
結(jié)束方法:
①void far closegraph()函數(shù)用于當(dāng)程序還要繼續(xù)在字符模下運(yùn)行時(shí)。它釋放由圖形函數(shù)所占用的內(nèi)存,同時(shí)把屏幕模式恢復(fù)為調(diào)用initgraph()之前的模式。
②void far restorecrtmode()函數(shù)用于結(jié)束運(yùn)行。將圖形適配器設(shè)置到原來的模式。任何分配的內(nèi)存都將自動(dòng)釋放。
頭文件:graphics.h
inport()從端口中讀入一個(gè)字的函數(shù)
原形:int inport(int portid)
調(diào)用方式:整型變量=inport(0x端口號(hào));
功能:從指定端口地址讀一個(gè)字。
頭文件:dos.h
inportb()從端口讀入一個(gè)字節(jié)的函數(shù)
原形:unsigned char inportb(int portid)
調(diào)用方式:字符變量=inportb(0x端口號(hào));
功能:從指定端口地址讀一個(gè)字節(jié)。
頭文件:dos.h
int86()執(zhí)行中斷函數(shù)(調(diào)用8086軟中斷函數(shù))
原形:int int86(int intno,union REGS *inregs,union REGS *outregs)
調(diào)用方式:int86(中斷號(hào),&輸入指針名,&輸出指針名)
返回值:中斷處理結(jié)束時(shí)的AX寄存器的值,錯(cuò)誤時(shí)outregs->x.cflag!=0
功能:函數(shù)int86() 用來執(zhí)行指定的8086軟中斷。首先把輸入指針?biāo)傅墓灿皿w中的內(nèi)容拷貝到CPU 的寄存器中,隨即產(chǎn)生對(duì)應(yīng)的中斷,返回后將CPU寄存器(AX)的內(nèi)容拷貝到輸出指針指向的共用體中。在使用int86() 函數(shù)進(jìn)行BIOS接口的系統(tǒng)調(diào)用時(shí),有的中斷調(diào)用設(shè)有若干選擇項(xiàng),這些選擇項(xiàng)可以根據(jù)調(diào)用時(shí)AH寄存器中的值來進(jìn)行訪問。
注:1.需先定義 union REGS 輸入指針名,輸出指針名;
2.向寄存器傳遞入口信息
輸入指針名.x.寄存器名=要賦的值(入口信息);
3.調(diào)用int86后得接受出口信息
變量名=輸出指針名.x.寄存器名
4.REGS的定義(在dos.h中):
struct WORDREGS{unsigned int ax, bx, cx, dx, si, di, cflag, flags;}
struct BYTEREGS{unsigned char al, ah, bl, bh, cl, ch, dl, dh;}
union REGS{struct WORDREGS x;struct BYTEREGS h;}
頭文件:dos.h
int86x()執(zhí)行中斷函數(shù) (通用8086軟中斷接口函數(shù))
頭文件:dos.h
原形:int int86x(int intno,union REGS *inregs,union REGS *outregs,struct SREGS * segregs)
調(diào)用方式:int86x(中斷號(hào),&輸入指針名,&輸出指針名,&段寄存器指針名);
注1:需先定義 union REGS 輸入指針名,輸出指針名; union REGS 示意圖
structstruct
WORDREGSBYTEREGS
┌ ┌───────┬──────┐──┬── ┐
│ ││ al │ 1 byte│
│ │ax├──────┤──┴─ 2 bytes
│ ││ ah │ │
│ ├───────┼──────┤───── ┘
│ ││ bl │
│ │bx├──────┤
│ ││ bh │
│ ├───────┼──────┤
│ ││ cl │
│ │cx├──────┤
│ ││ ch │
│ ├───────┼──────┤
│ ││ dl │
│ │dx├──────┤
│ ││ dh │
union regs├───────┼──────┤
│ │││
│ │si││
│ │││
│ ├───────┤│
│ │││
│ │di││
│ │││
│ ├───────┤│
│ │││
│ │cflag ││
│ │││
│ ├───────┤│
│ │││
│ │flags ││
│ │││
└ └───────┴──────┘
│x兩個(gè)結(jié)構(gòu)變量h│
└──共享同一存儲(chǔ)域──┘
其中字段flags對(duì)應(yīng)于標(biāo)志寄存器。字段cflag僅對(duì)應(yīng)于進(jìn)位標(biāo)志位,函數(shù)在調(diào)用時(shí)不用該字段,只在返回時(shí)設(shè)置這個(gè)字段,因?yàn)樵S多BIOS服務(wù)都是通過進(jìn)位標(biāo)置為0還是1來表示成功還是失敗。
注2:需先定義 struct SREGS 段寄存器指針名;
結(jié)構(gòu)SREGS定義如下
struct SREGS {unsigned int es,cs,ss,ds}
函數(shù)只用了該結(jié)構(gòu)中的段寄存器DS和ES。調(diào)用時(shí)根據(jù)它們的值設(shè)置DS和ES,同時(shí)把DS和ES原來的值保存在這個(gè)結(jié)構(gòu)中,返回時(shí)再恢復(fù)DS和ES為原來的值,這就允許程序使用遠(yuǎn)指針或大數(shù)據(jù)編譯模式。
該函數(shù)置全局變量_doserrno等于寄存器AX中的值,其返回值也等于AX中的值。
注3:向寄存器傳遞入口信息
輸入指針名.x.寄存器名=要賦的值(入口信息);
注4:調(diào)用int86x后得接受出口信息
變量名=輸出指針名.x.寄存器名
intdos()通用dos中斷接口函數(shù)
原形:int intdos(inregs,outregs)
union REGS *inregs;//調(diào)用時(shí)的各寄存器的值
union REGS *outregs;//返回寄存器的值
功能:產(chǎn)生DOS軟中斷
注意:如果需要功能號(hào),則裝入AH;如果需要子功能號(hào),則裝入AL。
頭文件:dos.h
intdosx()通用dos中斷接口函數(shù)
原形:int intdosx(inregs,outregs,segregs)
union REGS *inregs;調(diào)用時(shí)的各寄存器的值
union REGS *outregs;返回寄存器的值
struct SREGS *seregs;調(diào)用時(shí)的段寄存器的值(還設(shè)置返回時(shí)的值)
功能:產(chǎn)生DOS軟中斷
頭文件:dos.h
intr()執(zhí)行8086軟中斷函數(shù)(改變軟中斷接口函數(shù))
原形:void intr(int intno,struct REGPACK *preg)
調(diào)用方式:intr(中斷號(hào),&結(jié)構(gòu)變量名)
注1:結(jié)構(gòu)REGPACK定義如下
struct REGPACK
{
unsigned r_ax,r_bx,r_cx,r_dx;
unsigned r_bp,r_si,r_di,r_ds,r_es,r_flag;}
注2:使用時(shí)先定義一個(gè)結(jié)構(gòu)變量
struct REGPACK 結(jié)構(gòu)變量名;
注3:入口和出口用同一個(gè)結(jié)構(gòu)變量來傳遞寄存器的值。
結(jié)構(gòu)變量名.r_ax=要賦的值;
......
intr(中斷號(hào),&結(jié)構(gòu)變量名);
某變量=結(jié)構(gòu)變量名.r_ax;
頭文件:dos.h
itoa()把整形數(shù)轉(zhuǎn)換為字符串的函數(shù)
原形:char *itoa(int value,char *string,int radix)
功能:把value的值轉(zhuǎn)換為以NULL結(jié)束的字符串,并把結(jié)果存在string中。radix是轉(zhuǎn)換的基數(shù)值,在2到36之間。分配給string的空間必須可容納返回的所有字節(jié)(最多17字節(jié))。
返回值:指向string的指針
頭文件:stdlib.h
kbhit()檢查當(dāng)前按下的鍵的函數(shù)
原形:int kbhit(void)
功能:檢查按下的鍵是否有效,若有效則可用getch()或getche()讀取。
返回值:如果按鍵有效,返回一非零值,否則返回0。
頭文件:conio.h
keep()駐留并退出函數(shù)
原形:void keep(unsigned char status,unsigned size)
功能:用于安裝一個(gè)TSR程序(使用DOS功能調(diào)用0x31)。出口狀態(tài)設(shè)置為在status中的值,程序占用存儲(chǔ)空間為size,并釋放內(nèi)存的其余部分。
頭文件:dos.h
log()
原形∶double log(double num)
功能∶求num的自然對(duì)數(shù)值
頭文件∶math.h
log10()
原形∶double log10(double num)
功能∶求num以10為底的對(duì)數(shù)值
頭文件∶math.h
_lrotl()將一個(gè)無符號(hào)長(zhǎng)整形數(shù)左循環(huán)移位的函數(shù)
原形:unsigned long _lrotl(unsigned long value,int count)
功能:將value向左循環(huán)移動(dòng)count位。
返回值:將value向左循環(huán)移動(dòng)count位后的值。
頭文件:stdlib.h
_lrotr()將一個(gè)無符號(hào)長(zhǎng)整形數(shù)右循環(huán)移位的函數(shù)
原形:unsigned long _lrotr(unsigned long value,int count)
功能:將value向右循環(huán)移動(dòng)count位。
返回值:將value向右循環(huán)移動(dòng)count位后的值。
頭文件:stdlib.h
lseek()移動(dòng)文件指針函數(shù)
原形:long lseek(int handle,long offset,int fromwhere)
handle=open()函數(shù)的返回值(文件句柄);
fromwhere=文件位置
(SEEK_SET(0)從文件頭位置;SEEK_CUR(1)從當(dāng)前文件指針位置;SEEK_END(2)從文件結(jié)尾位置)
功能:把文件指針移動(dòng)到fromwhere所指的地址加上offset新位置的偏移上。
頭文件:io.h
返回值:指針新位置的偏移量(相對(duì)于文件開始處),出錯(cuò)時(shí)返回-1L。
ltoa()把長(zhǎng)整形數(shù)轉(zhuǎn)換為字符串的函數(shù)
原形:char *ltoa(long value,char *string,int radix)
功能:把value的值轉(zhuǎn)換為以NULL結(jié)束的字符串,并把結(jié)果存在string中。radix是轉(zhuǎn)換的基數(shù)值,在2到36之間。分配給string的空間必須可容納返回的所有字節(jié)(最多33字節(jié))。
返回值:指向string的指針
頭文件:stdlib.h
malloc()分配內(nèi)存函數(shù)
原形:void *malloc(size_t size)
功能:從堆中分配大小為size字節(jié)的塊。win32也適用。
返回值:返回新分配內(nèi)存的地址,若無足夠內(nèi)存,返回NULL。
頭文件:alloc.h、stdlib.h
mkdir()創(chuàng)建目錄函數(shù)
原形:int mkdir(const char *path)
功能:按給定的路徑建立一個(gè)新的目錄
頭文件:dir.h
返回值:0(成功);-1(失敗)
mktemp()建立一個(gè)的文件名的函數(shù)
原形:char *mktemp(char *template)
功能:使用一個(gè)的文件名來替換字符串template,并返回template。
頭文件:dir.h
原形:void getdfree(drive,dtable)
unsigned char drive;驅(qū)動(dòng)器號(hào)(0-當(dāng)前;1-A;2-B;...)
struct dfree
{
unsigned df_avail;//可使用的簇?cái)?shù)
unsigned df_total;//每個(gè)驅(qū)動(dòng)器的簇?cái)?shù)
unsigned df_bsec;//每個(gè)扇區(qū)的字節(jié)數(shù)
unsigned df_sclus;//每個(gè)簇的扇區(qū)數(shù)(出錯(cuò)時(shí)返回0xffff)
}*dtable;
功能:把由drive指定的關(guān)于驅(qū)動(dòng)器的信息返回到dtable
getdisk()讀取當(dāng)前磁盤驅(qū)動(dòng)器號(hào)函數(shù)
原形:int getdisk(void)
功能:取得當(dāng)前驅(qū)動(dòng)器號(hào)(0=A;1=B;....)
頭文件:dir.h
getenv()讀取環(huán)境變量的當(dāng)前值的函數(shù)
原形:char *getenv(const char *name)
用法:s=getenv(\"環(huán)境變量名\");
需先定義char *s;
功能:返回一給定的環(huán)境變量值,環(huán)境變量名可大寫或小寫。如果指定的變量在環(huán)境中未定義,則返回一空串。
頭文件:stdlib.h
getimage()將指定區(qū)域的位圖象存入內(nèi)存的函數(shù)
原形:void far getimage(int left,int top,int right,int bottom,void far *bitmap)
功能:將圖像(矩形區(qū)域)從屏幕拷貝到內(nèi)存,*bitmap指向內(nèi)存中存放圖像的區(qū)域。該區(qū)域的前兩個(gè)字節(jié)用于存放矩形的高和寬。
頭文件:graphics.h
getmaxx()返回屏幕上的X坐標(biāo)值的函數(shù)
原形:int far getmaxx(void)
功能:返回當(dāng)前圖形驅(qū)動(dòng)程序和圖形模式下的X坐標(biāo)值。
頭文件:graphics.h
getmaxy()返回屏幕上的Y坐標(biāo)值的函數(shù)
原形:int far getmaxy(void)
功能:返回當(dāng)前圖形驅(qū)動(dòng)程序和圖形模式下的Y坐標(biāo)值。
頭文件:graphics.h
getpixel()讀取像素顏色的函數(shù)
原形:unsigned far getpixel(int x,int y)
頭文件:graphics.h
getpsp()
原形∶unsigned getpsp(void)
功能∶使用DOS系統(tǒng)調(diào)用0x62,返回程序段前綴(PSP)的段地址
頭文件∶dos.h
gets()從標(biāo)準(zhǔn)輸入流stdio中讀取一字符串的函數(shù)
功能:將鍵盤上輸入的字符串立刻賦予字符串變量并顯示出來
調(diào)用方式:gets(字符串變量名)
注:需定義 char *字符串變量名;
gettime()讀取系統(tǒng)時(shí)間的函數(shù)
原形:void gettime(ptime)
struct time
{
unsigned char ti_min;
unsigned char ti_hour;
unsigned char ti_hund;//百分之一秒
unsigned char ti_sec;
};
struct time *ptime;
getvect()讀取中斷向量函數(shù)
原形:void interrupt(*getvect(int interruptno))
功能:讀入由interruptno(0-255之間)所指定的中斷向量值,并把該中斷向量值作為中斷函數(shù)的遠(yuǎn)指針返回。
返回值:指定中斷向量的當(dāng)前4字節(jié)值。
頭文件:dos.h
使用實(shí)例:oldfunc=getvect(5);
先定義void interrupt(*oldfunc)();
用后恢復(fù)setvect(5,oldfunc);
getx()返回當(dāng)前圖形方式下位置的X坐標(biāo)值的函數(shù)
原形:int far getx(void);
頭文件:graphics.h
gety()返回當(dāng)前圖形方式下位置的Y坐標(biāo)值的函數(shù)
原形:int far gety(void);
頭文件:graphics.h
imagesize()返回保存圖像緩沖區(qū)大小的函數(shù)
原形:unsigned far imagesize(int left,int top,int right,int bottom)
功能:確定保存圖像所需的存儲(chǔ)區(qū)大小。
返回值:返回存儲(chǔ)區(qū)的大小(字節(jié)),若所需內(nèi)存大于等于64K-1字節(jié),則返回0xffff(-1)。
頭文件:graphics.h
initgraph()顯示模式控制函數(shù)(初始化圖形系統(tǒng)函數(shù))
功能:把圖形適配器設(shè)置為一種圖形模式,將選擇的圖形驅(qū)動(dòng)程序(在BGI文件中)裝入到內(nèi)存。
調(diào)用方式:
void far initgraph(int far *driver,int far *mode,char far*path)
其中: *driver可以是數(shù)值(0-10),也可是符號(hào)值(DETECT、CGA、MCGA、EGA、EGA64、EGAMONO、RESERVED、HERCMONO、ATT400、VGA、 PC3270)。
*mode參數(shù)從圖形系統(tǒng)為各種常用的圖形適配器設(shè)置的圖形模式中(CGAC0、…、IBM8514HI--見頭文件graphics.h)選取。常用的有:VGAMED或1(640×350)(等效于BIOS的模式15)、EGAHI或1(640×350)等。
path指向的字符串為裝入驅(qū)動(dòng)程序的路徑。如果缺省路徑,驅(qū)動(dòng)程序在當(dāng)前目錄。
結(jié)束方法:
①void far closegraph()函數(shù)用于當(dāng)程序還要繼續(xù)在字符模下運(yùn)行時(shí)。它釋放由圖形函數(shù)所占用的內(nèi)存,同時(shí)把屏幕模式恢復(fù)為調(diào)用initgraph()之前的模式。
②void far restorecrtmode()函數(shù)用于結(jié)束運(yùn)行。將圖形適配器設(shè)置到原來的模式。任何分配的內(nèi)存都將自動(dòng)釋放。
頭文件:graphics.h
inport()從端口中讀入一個(gè)字的函數(shù)
原形:int inport(int portid)
調(diào)用方式:整型變量=inport(0x端口號(hào));
功能:從指定端口地址讀一個(gè)字。
頭文件:dos.h
inportb()從端口讀入一個(gè)字節(jié)的函數(shù)
原形:unsigned char inportb(int portid)
調(diào)用方式:字符變量=inportb(0x端口號(hào));
功能:從指定端口地址讀一個(gè)字節(jié)。
頭文件:dos.h
int86()執(zhí)行中斷函數(shù)(調(diào)用8086軟中斷函數(shù))
原形:int int86(int intno,union REGS *inregs,union REGS *outregs)
調(diào)用方式:int86(中斷號(hào),&輸入指針名,&輸出指針名)
返回值:中斷處理結(jié)束時(shí)的AX寄存器的值,錯(cuò)誤時(shí)outregs->x.cflag!=0
功能:函數(shù)int86() 用來執(zhí)行指定的8086軟中斷。首先把輸入指針?biāo)傅墓灿皿w中的內(nèi)容拷貝到CPU 的寄存器中,隨即產(chǎn)生對(duì)應(yīng)的中斷,返回后將CPU寄存器(AX)的內(nèi)容拷貝到輸出指針指向的共用體中。在使用int86() 函數(shù)進(jìn)行BIOS接口的系統(tǒng)調(diào)用時(shí),有的中斷調(diào)用設(shè)有若干選擇項(xiàng),這些選擇項(xiàng)可以根據(jù)調(diào)用時(shí)AH寄存器中的值來進(jìn)行訪問。
注:1.需先定義 union REGS 輸入指針名,輸出指針名;
2.向寄存器傳遞入口信息
輸入指針名.x.寄存器名=要賦的值(入口信息);
3.調(diào)用int86后得接受出口信息
變量名=輸出指針名.x.寄存器名
4.REGS的定義(在dos.h中):
struct WORDREGS{unsigned int ax, bx, cx, dx, si, di, cflag, flags;}
struct BYTEREGS{unsigned char al, ah, bl, bh, cl, ch, dl, dh;}
union REGS{struct WORDREGS x;struct BYTEREGS h;}
頭文件:dos.h
int86x()執(zhí)行中斷函數(shù) (通用8086軟中斷接口函數(shù))
頭文件:dos.h
原形:int int86x(int intno,union REGS *inregs,union REGS *outregs,struct SREGS * segregs)
調(diào)用方式:int86x(中斷號(hào),&輸入指針名,&輸出指針名,&段寄存器指針名);
注1:需先定義 union REGS 輸入指針名,輸出指針名; union REGS 示意圖
structstruct
WORDREGSBYTEREGS
┌ ┌───────┬──────┐──┬── ┐
│ ││ al │ 1 byte│
│ │ax├──────┤──┴─ 2 bytes
│ ││ ah │ │
│ ├───────┼──────┤───── ┘
│ ││ bl │
│ │bx├──────┤
│ ││ bh │
│ ├───────┼──────┤
│ ││ cl │
│ │cx├──────┤
│ ││ ch │
│ ├───────┼──────┤
│ ││ dl │
│ │dx├──────┤
│ ││ dh │
union regs├───────┼──────┤
│ │││
│ │si││
│ │││
│ ├───────┤│
│ │││
│ │di││
│ │││
│ ├───────┤│
│ │││
│ │cflag ││
│ │││
│ ├───────┤│
│ │││
│ │flags ││
│ │││
└ └───────┴──────┘
│x兩個(gè)結(jié)構(gòu)變量h│
└──共享同一存儲(chǔ)域──┘
其中字段flags對(duì)應(yīng)于標(biāo)志寄存器。字段cflag僅對(duì)應(yīng)于進(jìn)位標(biāo)志位,函數(shù)在調(diào)用時(shí)不用該字段,只在返回時(shí)設(shè)置這個(gè)字段,因?yàn)樵S多BIOS服務(wù)都是通過進(jìn)位標(biāo)置為0還是1來表示成功還是失敗。
注2:需先定義 struct SREGS 段寄存器指針名;
結(jié)構(gòu)SREGS定義如下
struct SREGS {unsigned int es,cs,ss,ds}
函數(shù)只用了該結(jié)構(gòu)中的段寄存器DS和ES。調(diào)用時(shí)根據(jù)它們的值設(shè)置DS和ES,同時(shí)把DS和ES原來的值保存在這個(gè)結(jié)構(gòu)中,返回時(shí)再恢復(fù)DS和ES為原來的值,這就允許程序使用遠(yuǎn)指針或大數(shù)據(jù)編譯模式。
該函數(shù)置全局變量_doserrno等于寄存器AX中的值,其返回值也等于AX中的值。
注3:向寄存器傳遞入口信息
輸入指針名.x.寄存器名=要賦的值(入口信息);
注4:調(diào)用int86x后得接受出口信息
變量名=輸出指針名.x.寄存器名
intdos()通用dos中斷接口函數(shù)
原形:int intdos(inregs,outregs)
union REGS *inregs;//調(diào)用時(shí)的各寄存器的值
union REGS *outregs;//返回寄存器的值
功能:產(chǎn)生DOS軟中斷
注意:如果需要功能號(hào),則裝入AH;如果需要子功能號(hào),則裝入AL。
頭文件:dos.h
intdosx()通用dos中斷接口函數(shù)
原形:int intdosx(inregs,outregs,segregs)
union REGS *inregs;調(diào)用時(shí)的各寄存器的值
union REGS *outregs;返回寄存器的值
struct SREGS *seregs;調(diào)用時(shí)的段寄存器的值(還設(shè)置返回時(shí)的值)
功能:產(chǎn)生DOS軟中斷
頭文件:dos.h
intr()執(zhí)行8086軟中斷函數(shù)(改變軟中斷接口函數(shù))
原形:void intr(int intno,struct REGPACK *preg)
調(diào)用方式:intr(中斷號(hào),&結(jié)構(gòu)變量名)
注1:結(jié)構(gòu)REGPACK定義如下
struct REGPACK
{
unsigned r_ax,r_bx,r_cx,r_dx;
unsigned r_bp,r_si,r_di,r_ds,r_es,r_flag;}
注2:使用時(shí)先定義一個(gè)結(jié)構(gòu)變量
struct REGPACK 結(jié)構(gòu)變量名;
注3:入口和出口用同一個(gè)結(jié)構(gòu)變量來傳遞寄存器的值。
結(jié)構(gòu)變量名.r_ax=要賦的值;
......
intr(中斷號(hào),&結(jié)構(gòu)變量名);
某變量=結(jié)構(gòu)變量名.r_ax;
頭文件:dos.h
itoa()把整形數(shù)轉(zhuǎn)換為字符串的函數(shù)
原形:char *itoa(int value,char *string,int radix)
功能:把value的值轉(zhuǎn)換為以NULL結(jié)束的字符串,并把結(jié)果存在string中。radix是轉(zhuǎn)換的基數(shù)值,在2到36之間。分配給string的空間必須可容納返回的所有字節(jié)(最多17字節(jié))。
返回值:指向string的指針
頭文件:stdlib.h
kbhit()檢查當(dāng)前按下的鍵的函數(shù)
原形:int kbhit(void)
功能:檢查按下的鍵是否有效,若有效則可用getch()或getche()讀取。
返回值:如果按鍵有效,返回一非零值,否則返回0。
頭文件:conio.h
keep()駐留并退出函數(shù)
原形:void keep(unsigned char status,unsigned size)
功能:用于安裝一個(gè)TSR程序(使用DOS功能調(diào)用0x31)。出口狀態(tài)設(shè)置為在status中的值,程序占用存儲(chǔ)空間為size,并釋放內(nèi)存的其余部分。
頭文件:dos.h
log()
原形∶double log(double num)
功能∶求num的自然對(duì)數(shù)值
頭文件∶math.h
log10()
原形∶double log10(double num)
功能∶求num以10為底的對(duì)數(shù)值
頭文件∶math.h
_lrotl()將一個(gè)無符號(hào)長(zhǎng)整形數(shù)左循環(huán)移位的函數(shù)
原形:unsigned long _lrotl(unsigned long value,int count)
功能:將value向左循環(huán)移動(dòng)count位。
返回值:將value向左循環(huán)移動(dòng)count位后的值。
頭文件:stdlib.h
_lrotr()將一個(gè)無符號(hào)長(zhǎng)整形數(shù)右循環(huán)移位的函數(shù)
原形:unsigned long _lrotr(unsigned long value,int count)
功能:將value向右循環(huán)移動(dòng)count位。
返回值:將value向右循環(huán)移動(dòng)count位后的值。
頭文件:stdlib.h
lseek()移動(dòng)文件指針函數(shù)
原形:long lseek(int handle,long offset,int fromwhere)
handle=open()函數(shù)的返回值(文件句柄);
fromwhere=文件位置
(SEEK_SET(0)從文件頭位置;SEEK_CUR(1)從當(dāng)前文件指針位置;SEEK_END(2)從文件結(jié)尾位置)
功能:把文件指針移動(dòng)到fromwhere所指的地址加上offset新位置的偏移上。
頭文件:io.h
返回值:指針新位置的偏移量(相對(duì)于文件開始處),出錯(cuò)時(shí)返回-1L。
ltoa()把長(zhǎng)整形數(shù)轉(zhuǎn)換為字符串的函數(shù)
原形:char *ltoa(long value,char *string,int radix)
功能:把value的值轉(zhuǎn)換為以NULL結(jié)束的字符串,并把結(jié)果存在string中。radix是轉(zhuǎn)換的基數(shù)值,在2到36之間。分配給string的空間必須可容納返回的所有字節(jié)(最多33字節(jié))。
返回值:指向string的指針
頭文件:stdlib.h
malloc()分配內(nèi)存函數(shù)
原形:void *malloc(size_t size)
功能:從堆中分配大小為size字節(jié)的塊。win32也適用。
返回值:返回新分配內(nèi)存的地址,若無足夠內(nèi)存,返回NULL。
頭文件:alloc.h、stdlib.h
mkdir()創(chuàng)建目錄函數(shù)
原形:int mkdir(const char *path)
功能:按給定的路徑建立一個(gè)新的目錄
頭文件:dir.h
返回值:0(成功);-1(失敗)
mktemp()建立一個(gè)的文件名的函數(shù)
原形:char *mktemp(char *template)
功能:使用一個(gè)的文件名來替換字符串template,并返回template。
頭文件:dir.h