2013-01-20 25 views
1

Mingw默认没有BIOS.h文件。我正在使用netbeans IDE和第三方工具mingw进行系统编程。 。 ?我在哪里得到BIOS.h文件,要导入Mingw?

任何人都可以帮助我,我在哪里得到该文件?

这是代码。

#include<stdio.h> 
#include<BIOS.H> 
#include<DOS.H> 

char st[80] ={"Hello World$"}; 

void main() 
{ 
    _DX = (unsigned int) st; 
    _AH = 0x09; 
    geninterrupt(0x21); 
} 

回答

2

你真的需要它吗?它已经过时了一百次左右。但从我听说的,一些旧的Turbo C版本可能有它。你也可以试试http://www.sandroid.org/TurboC/,但他们说这个文件可能没有所有的功能。

+0

是的,我必须使用turbo c,用于bios级别编程。 Mingw不支持bios级别的指示。 bdw谢谢你的协助 –

8

没有,你没有。

这些头文件(dos.hbios.h)来自16位DOS编译器,如Turbo C或Open Watcom C. MinGW是Windows的32位编译器。因此,即使你得到这些头文件,他们将是无用的,因为:

  1. 他们是用gcc不兼容
  2. 他们也需要对应的库,因为头本身并不含有像geninterrupt()
  3. 的东西定义
  4. DOS中断服务(int 21h)不可用Win32程序

此外,GCC不支持变量混叠CPU寄存器(例如_DX_AH)。

您可能需要使用适当的16位DOS编译器或使用gcc和Win32 API提供的功能编写Windows程序。

+0

非常感谢你。你解决了我的问题。是的,你说的权利mingw是一个32位编译器。它不支持BIOS级别的指示。 甚至我试图从Turbo C++包含文件夹复制bios.h文件并复制c:/ mingw/include。它没有工作。 –

+1

如果有任何人遇到这样的问题。你必须使用Turbo C++来获取bios级别的指令。 Mingw不支持bios.h. 这是一个链接,您可以下载Windows 7,vista 32或64位操作系统的turbo c。 http://www.megaleecher.net/Download_Turbo_For_Windows –

+1

@qasimazam:不!使用Turbo C++不是*适当的操作 - 除非你想回溯20年!而应该用适当的Win32或标准库调用来替换BIOS调用。此外Int21是* DOS *不是BIOS调用; 0x09是“写入字符串”。在Windows中,即使使用16位编译器,该调用也将被虚拟化,被困并转换为Win32控制台调用,因此在调用DOS时任何感知的效率都是错误的。 – Clifford