【操作系统求助】基于DOS的多任务系统——部分程序死活看不懂
/* InitDos()函数:功能是获得INDOS标志地址和严重错误标志的地址 */ void InitDos(void) { union REGS regs; struct SREGS segregs; /* 获得INDOS标
贴吧:古剑奇谭作者:卧云揽雪?? 2013-05-05 18:16
回复:C函数库
int intdos(union REGS *inregs,union REGS *outregs)
本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值
存于结构inregs中,执行完后函数将返回的寄存器值存于结构outregs中
int intdosx(union REGS *inregs,union REGS *outregs,struct SREGS *segregs)
本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值
存于结构inregs和segregs中,执行完后函数将返回的寄存器值存于结构outregs中
void intr(int intr_num,struct REGPACK *preg)本函数中一个备用的8086软件中断接口
它能产生一个由参数intr_num指定的8086软件中断.函数在执行软件中断前,
从结构preg复制用户定义的各寄存器值到各个寄存器.软件中断完成后,
函数将当前各个寄存器的值复制到结构preg中.参数如下:
intr_num 被执行的中断号
preg为保存用户定义的寄存器值的结构,结构如下
┌——————————————————————┐
│struct REGPACK │
│{ │
│ unsigned r_ax,r_bx,r_cx,r_dx; │
│ unsigned r_bp,r_si,r_di,r_ds,r_es,r_flags; │
│} │
└——————————————————————┘
函数执行完后,将新的寄存器值存于结构preg中
void keep(int status,int size)以status状态返回MSDOS,但程序仍保留于内存中,所占
用空间由size决定.
void ctrlbrk(int (*fptr)()) 设置中断后的对中断的处理程序.
void disable() 禁止发生中断
void enable() 允许发生中断
void geninterrupt(int intr_num)执行由intr_num所指定的软件中断
void interrupt(* getvect(int intr_num))() 返回中断号为intr_num的中断处理程序,
例如: old_int_10h=getvect(0x10);
void setvect(int intr_num,void interrupt(* isr)()) 设置中断号为intr_num的中
断处理程序为isr,例如: setvect(0x10,new_int_10h);
void harderr(int (*fptr)()) 定义一个硬件错误处理程序,
每当出现错误时就调用fptr所指的程序
void hardresume(int rescode)硬件错误处理函数
void hardretn(int errcode) 硬件错误处理函数
int inport(int prot) 从指定的输入端口读入一个字,并返回这个字
int inportb(int port)从指定的输入端口读入一个字节,并返回这个字节
void outport(int port,int word) 将字word写入指定的输出端口port
void outportb(int port,char byte)将字节byte写入指定的输出端口port
int peek(int segment,unsigned offset) 函数返回segment:offset处的一个字
char peekb(int segment,unsigned offset)函数返回segment:offset处的一个字节
void poke(int segment,int offset,char value) 将字value写到segment:offset处
void pokeb(int segment,int offset,int value) 将字节value写到segment:offset处
int randbrd(struct fcb *fcbptr,int reccnt)
函数利用打开fcbptr所指的FCB读reccnt个记录.
int randbwr(struct fcb *fcbptr,int reccnt)
函数将fcbptr所指的FCB中的reccnt个记录写到磁盘上
void segread(struct SREGS *segtbl)函数把段寄存器的当前值放进结构segtbl中
int getverify() 取检验标志的当前状态(0=检验关闭,1=检验打开)
void setverify(int value)设置当前检验状态,
value为0表示关闭检验,为1表示打开检验
int getcbrk()本函数返回控制中断检测的当前设置
int setcbrk(int value)本函数用来设置控制中断检测为接通或断开

贴吧:千金买宝刀作者:千金买宝刀 2012-05-20 15:01
回复:语言>C语言库函数

int    bdos(int dosfun,unsigned dosdx,unsigned dosal)本函数对MSDOS系统进行调用,
        dosdx为寄存器dx的值,dosal为寄存器al的值,dosfun为功能号
int    bdosptr(int dosfun,void *argument,unsiigned dosal)本函数对MSDOS系统进行调用,
        argument为寄存器dx的值,dosal为寄存器al的值,dosfun为功能号
int    int86(int intr_num,union REGS *inregs,union REGS *outregs)
        执行intr_num号中断,用户定义的寄存器值存于结构inregs中,
        执行完后将返回的寄存器值存于结构outregs中.
int    int86x(int intr_num,union REGS *inregs,union REGS *outregs,
              struct SREGS *segregs)执行intr_num号中断,用户定义的寄存器值存于
        结构inregs中和结构segregs中,执行完后将返回的寄存器值存于结构outregs中.
int    intdos(union REGS *inregs,union REGS *outregs)
        本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值
        存于结构inregs中,执行完后函数将返回的寄存器值存于结构outregs中
int    intdosx(union REGS *inregs,union REGS *outregs,struct SREGS *segregs)
        本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值
        存于结构inregs和segregs中,执行完后函数将返回的寄存器值存于结构outregs中
void   intr(int intr_num,struct REGPACK *preg)本函数中一个备用的8086软件中断接口
        它能产生一个由参数intr_num指定的8086软件中断.函数在执行软件中断前,
        从结构preg复制用户定义的各寄存器值到各个寄存器.软件中断完成后,
        函数将当前各个寄存器的值复制到结构preg中.参数如下:
        intr_num 被执行的中断号
        preg为保存用户定义的寄存器值的结构,结构如下
        ┌——————————————————————┐
        │struct REGPACK                               │
        │{                                            │
        │ unsigned r_ax,r_bx,r_cx,r_dx;               │
        │ unsigned r_bp,r_si,r_di,r_ds,r_es,r_flags; │

贴吧:揭锅拿锅话说其实我只是想要创建一个名字可以长到有三十一个字的作者:I_h_E 2010-04-22 21:10

大家都在搜

  • int f(int x)
  • int x=23 do
  • define f(x) x*x
  • int i,j,x=0
  • xbiedos
  • sx05re添加dos游戏教程
  • sx05re怎么导入dos游戏
  • (int)x
  • int x=3
  • (int)(x+y)
  • int x=017
  • int x=023
  • 设x和y均为int型变量
  • 设xyz均为int型变量
  • 设变量x为float型且已经赋值
  • 设已有定义float x
  • sx05re镜像文件
  • 电脑运行sx05re
  • sx05re怎么格式化