call the function of do s in c(50分)

  • 主题发起人 主题发起人 苏樱樱
  • 开始时间 开始时间

苏樱樱

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在c程序中调用dos功能?(我知道有个*dos()的函数,不会用):P
 
不要在32位程序里面想这事
 
#includedo
s.h
 
不知道她(他?)说的dos功能是什么,int 21h? or something like copy
and ...
 
就是调用操作系统的功能啦!
 
还是不明白,
不过原来dos 的好多中断都支持 32 位的了。
 
说说要哪个功能吧
 
是Turbo C吗?
用int86x(int intno,union REGS *inregs,union REGS *outregs)
将inregs中个代表寄存器的变量赋值后就可使用
 
就目前现状来说,还是不要太多花时间研究DOS下的问题了吧,不满你说,
想当年我在DOS下用C还算半个高手,可现在都忘得差不多了,什么VB,Delphi
之类的又从头来了一遍,(没用C++是因为怕麻烦)。
 
用Turbo C 嵌"汇编语言" 无所不能
当然 Turbo Pascal 也可以
 
首先#include <dos.h>
然后,如果只想用DOS功能(INT 21),可以用
intdos(union REGS *, union REGS *) 或
intdosx(union REGS *, union REGS *, struct SREGS *)
函数,后者就多了段寄存器
比如
void DisplayMsg (char *str)
{
union REGS reg;
struct SREGS sreg;
reg.h.ah = 9;
// 显示字符串的子功能
reg.x.dx = FP_OFF (str);
// DS:DX指向字符串
sreg.ds = FP_SEG (str);
intdosx (&amp;reg, &amp;reg, &amp;sreg);
}
如果想调用别的中断,可以用
int86(int intno, union REGS *, union REGS *) 或
int86x(int intno, union REGS *, union REGS *, struct SREGS *)
 
呵呵,往事如诗啊。
 
多人接受答案了。
 
后退
顶部