⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dos.part2.h

📁 C语言库函数介绍
💻 H
📖 第 1 页 / 共 2 页
字号:
@函数名称:     inport
函数原型:     int inport(int port)
函数功能:     返回从指定的I/O端口读入一个字(16位数)
函数返回:     读入的字数值
参数说明:     port-I/O端口地址
所属文件:     <dos.h>

#include <stdio.h>
#include <dos.h>
int main()
{
    int result;
    int port=0;
    result=inport(port);
    printf("Word read from port %d=0x%X",port,result);
    return 0;
}


@函数名称:     inportb
函数原型:     int inportb(int port)
函数功能:     返回从指定的I/O端口读入一个字节(8位数))
函数返回:     读入的字数值
参数说明:     port-I/O端口地址
所属文件:     <dos.h>

#include <stdio.h>
#include <dos.h>
int main()
{
    int result;
    int port=0;
    result=inportb(port);
    printf("Word read from port %d=0x%X",port,result);
    return 0;
}


@函数名称:     outport
函数原型:     void outport(int port, int value)
函数功能:     向port地址的接口输出value
函数返回:
参数说明:     port-端口地址,value-要输出的16位数
所属文件:     <dos.h>

#include <stdio.h>
#include <dos.h>
int main()
{
    int value=64;
    int port=0;
    outportb(port,value);
    printf("Value %d sent to port number %d",value,port);
    return 0;
}


@函数名称:     outportb
函数原型:     void outportb(unsigned char port, unsigned char value)
函数功能:     向port地址的接口输出value
函数返回:
参数说明:     port-端口地址,value-要输出的8位数
所属文件:     <dos.h>

#include <stdio.h>
#include <dos.h>
int main()
{
    int value=64;
    int port=0;
    outportb(port,value);
    printf("Value %d sent to port number %d",value,port);
    return 0;
}


@函数名称:     intdos
函数原型:     int intdos(union REGS *inregs, union REGS *outregs)
函数功能:     调用DOS的INT21中断
函数返回:     AX
参数说明:
所属文件:     <dos.h>

#include <stdio.h>
#include <dos.h>
int delete_file(char near *filename)
{
    union REGS regs;
    int ret;
    regs.h.ah=0x41;
    regs.x.dx=(unsigned) filename;
    ret=intdos(&regs,&regs);
    return(regs.x.cflag ? ret : 0);
}
int main()
{
    int err;
    err=delete_file("NOTEXIST.$$$");
    if (!err)
        printf("Able to delete NOTEXIST.$$$");
    else
        printf("Not Able to delete NOTEXIST.$$$");
    return 0;
}


@函数名称:     intdosx
函数原型:     int intdosx(union REGS *inregs, union REGS *outregs, struct SREGS *segregs)
函数功能:     调用DOS的INT21中断,主要用于大编译模式
函数返回:     AX
参数说明:
所属文件:     <dos.h>

#include <stdio.h>
#include <dos.h>
int delete_file(char far *filename)
{
    union REGS regs;struct SREGS sregs;
    int ret;
    regs.h.ah=0x41;
    regs.x.dx=FP_OFF(filename);
    sregs.ds=FP_SEG(filename);
    ret=intdosx(&regs,&regs,&sregs);
    return(regs.x.cflag ? ret : 0);
}
int main()
{
    int err;
    err=delete_file("NOTEXIST.$$$");
    if (!err)
        printf("Able to delete NOTEXIST.$$$");
    else
        printf("Not Able to delete NOTEXIST.$$$");
    return 0;
}


@函数名称:     int86
函数原型:     int int86(int intno, union REGS *inregs, union REGS *outregs)
函数功能:     调用中断号为intno的DOS软中断
函数返回:     AX
参数说明:
所属文件:     <dos.h>

#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define VIDEO 0x10
void movetoxy(int x,int y)
{
    union REGS regs;
    regs.h.ah=2;
    regs.h.dh=y;
    regs.h.dl=x;
    regs.h.bh=0;
    int86(VIDEO,&regs,&regs);
}
int main()
{
    clrscr();
    movetoxy(35,10);
    printf("Hello");
    return 0;
}


@函数名称:     int86x
函数原型:     int int86x(int intno, union REGS *inregs, union, REGS *outregs, struct SREGS *segregs)
函数功能:     调用中断号为intno的DOS软中断,主要用于大编译模式
函数返回:     AX
参数说明:
所属文件:     <dos.h>

#include <dos.h>
#include <process.h>
#include <stdio.h>
int main()
{
    char filename[80];
    union REGS inregs,outregs;
    struct SREGS segregs;
    printf("Enter filename: ");
    gets(filename);
    inregs.h.ah=0x43;
    inregs.h.al=0x21;
    inregs.x.dx=FP_OFF(filename);
    segregs.ds=FP_SEG(filename);
    int86x(0x21,&inregs,&outregs,&segregs);
    printf("File attribute: %X",outregs.x.cx);
    return 0;
}


@函数名称:     intr
函数原型:     void intr(int intno, struct REGPACK *preg)
函数功能:     调用中断号为intno的DOS软中断,是int86函数的一个替代函数
函数返回:
参数说明:
所属文件:     <dos.h>

#include <stdio.h>
#include <string.h>
#include <dir.h>
#include <dos.h>
#define CF 1
int main()
{
    char directory[80];
    struct REGPACK reg;
    printf("Enter directory to change to: ");
    gets(directory);
    reg.r_ax=0x3B<<8;
    reg.r_dx=FP_OFF(directory);
    reg.r_ds=FP_SEG(directory);
    intr(0x21,&reg);
    if (reg.r_flags&CF)
        printf("Directory change failed");
    getcwd(directory,80);
    printf("The current directory is: %s",directory);
    return 0;
}


@函数名称:     keep
函数原型:     void keep(unsigned char status, unsigned size)
函数功能:     执行INT31中断来中止程序,但程序仍然驻留在内存中
函数返回:
参数说明:     size-要驻留程序的大小,srarus-返回该DOS的状态数值	
所属文件:     <dos.h>

#include <dos.h>
#define INTR 0x1C
#define ATTR 0x7900
extern unsigned _heaplen=1024;
extern unsigned _stklen =512;
void interrupt (*oldhandler)();
void interrupt handler(void)
{
    unsigned int(far *screen)[80];
    static int count;
    screen=MK_FP(0xB800,0);
    count++;
    count%=10;
    screen[0][79]=count+'0'+ATTR;
    oldhandler();
}
int main()
{
    oldhandler=getvect(INTR);
    setvect(INTR,handler);
    keep(0,(_SS+(_SP/16)-_psp));
    return 0;
}


@函数名称:     parsfnm
函数原型:     char *parsfnm(const char *cmdline, struct fcb *fcb, int opt)
函数功能:     该函数使用DOS中断调用0x29来将命令行字符转换为FCB格式
函数返回:     多项式的计算结果
参数说明:     cmdline-命令行参数.opt-用于设置AL寄存器的数值
所属文件:     <dos.h>

#include <process.h>
#include <string.h>
#include <stdio.h>
#include <dos.h>
int main()
{
    char line[80];
    struct fcb blk;
    printf("Enter drive and file name");
    gets(line);
    if (parsfnm(line,&blk,1)==NULL)
        printf("Error in parsfm call");
    else
        printf("Drive #%d Name: %11s",blk.fcb_drive,blk.fcb_name);
    return 0;
}


@函数名称:     peek
函数原型:     int peek(unsigned segment, unsigned offset)
函数功能:     内存中读出一个字(16位)
函数返回:     读出的字内容
参数说明:     segmemt-段地址,offset-段内偏移地址
所属文件:     <dos.h>

#include <stdio.h>
#include <conio.h>
#include <dos.h>
int main()
{
    int value=0;
    printf("The current status of your keyboard is:");
    value=peek(0x0040,0x0017);
    if (value&1)
        printf("Right shift on");
    else
        printf("Right shift off");
    if (value&2)
        printf("Left shift on");
    else
        printf("Left shift off");
    if (value&4)
        printf("Control key on");
    else
        printf("Control key off");
    if (value&8)
        printf("Alt key on");
    else
        printf("Alt key off");
    if (value&16)
        printf("Scroll lock on");
    else
        printf("Scroll lock off");
    if (value&32)
        printf("Num lock on");
    else
        printf("Num lock off");
    if (value&64)
        printf("Caps lock on");
    else
        printf("Caps lock off");
    return 0;
}


@函数名称:     peekb
函数原型:     int peekb(unsigned segment, unsigned offset)
函数功能:     内存中读出一个字(8位)
函数返回:     读出的字内容
参数说明:     segmemt-段地址,offset-段内偏移地址
所属文件:     <dos.h>

#include <stdio.h>
#include <conio.h>
#include <dos.h>
int main()
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -