Pregunta

Para mi clase de lenguaje ensamblador, estamos escribiendo programas DOS usando DPMI. Desafortunadamente, no tengo acceso a una máquina con Windows de 32 bits todo el tiempo. Tengo una máquina virtual Debian instalada en casi todas las computadoras que uso.

Tengo instalado DOSBox y DOSEMU. ¿Hay alguna forma de ensamblar y compilar los programas en Linux en lugar de DOS? Estoy usando nasm, así que parece que no tengo problemas para ensamblarlo en formato DOS. Sin embargo, tengo problemas para ejecutarlo a través del compilador con mi código C y obtener un ejecutable de DOS (usando gcc o MinGW).

¿Hay alguna forma de hacer esto o tendré que instalar todas las herramientas en DOS?

¿Fue útil?

Solución

Ni siquiera estoy seguro de si puedes compilar aplicaciones de DOS usando GCC. Hace mucho tiempo había una variante del compilador gcc llamada DJGPP (o algo así). Aunque nunca lo hice funcionar.

Las posibilidades de que pueda realizar una compilación cruzada de un GCC para DOS en estos días son casi nulas.

Te sugiero que pruebes el viejo compilador de Watcom. Es un compilador nativo de DOS y su implementación DPMI también funciona a las mil maravillas en DosBox. La interfaz con archivos de objetos compilados NASM tampoco es un problema (lo hice hace un par de años)

Hoy el compilador se ha hecho de código abierto y se llama OpenWatcom.

http://www.openwatcom.org/index.php/Main_Page

Otros consejos

BCC está en Debian y es capaz de producir código decente para 8080 hasta 80386. Use el modificador -Md para producir un binario de MS-DOS.

Probablemente la forma más fácil de hacerlo es utilizar las herramientas estándar de DOS para la tarea.

DOSBOX es un emulador realmente bueno.

DJGPP es ridículamente fácil de instalar, solo se necesitan tres .ZIP como mínimo:

  1. BNU219B.ZIP (ensamblador, enlazador, bibliotecario)
  2. GCC441B.ZIP (compilador de C)
  3. DJDEV204.ZIP (libc, encabezados)

http://www.delorie.com/djgpp/getting.html

unzip *.zip -d c:\djgpp && 
set DJGPP=c:\djgpp\djgpp.env &&
path c:\djgpp\bin;%PATH%

gcc myfile.c -o myfile.exe

Para producir una salida compatible con DOS, deberá usar el compilador alojado en DOS en DOSEMU (no DOSBox !! demasiado lento y con errores, solo para juegos) o usar un compilador cruzado alojado en Linux (DJ's el sitio tiene los RPM para eso).

Sin embargo, si desea un código 100% de 16 bits, tendrá que usar algo más (por ejemplo, OpenWatcom). OpenWatcom también es compatible con el host y el destino de Linux (beta !!) (sin bibliotecas compartidas, sin embargo, IIRC), pero es posible que deba compilarlo usted mismo con GCC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top