Programas 32 bits a 16 bitsOnline version La herramienta emu8086 es un emulador que corre programas de 16 bits en un Sistema Operativo Heredado MS-DOS. La herramienta tiene muchas características de depuración, como son: observar el valor de los registros internos en todo momento, volcados de memoria, volcados de pila, observación de Banderas de Estados, dispositivos virtuales programables, etc. Sin embargo los textos actuales de lenguaje ensamblador tienen en su mayoría código de 32 bits, por lo que es necesario convertirlos a 16 bits para poder usar la herramienta. En este video se explica con un ejemplo como hacer esta conversión paso a paso. by Raul Alberto Duarte Achach 1 El emu8086 se usa para correr programas de 16 bits en un sistema operativo a heredado de 16 bits b de 32 bits c de 64 bits d de 8 bits 2 En la mayoría de las ocasiones un programa de 32 bits se puede convertir en uno de 16 debido a que a el principio fundamental es exactamente el mismo b los programas de 32 bits son mas rápidos que los de 16 bits c los programas de 32 bits no caben en memoria d una máquina de 16 bits también puede ejecutar programas de 32 bits e una máquina de 32 bits también puede ejecutar programas de 16 3 Para que el emu8086 pueda compilar con otro ensamblador distinto del que viene por default es necesario a Utilizar una directiva al principio del programa para que sepa que ensamblador utilizar b Utilizar exclusivamente instrucciones de 16 bits c utilizar exclusivamente instrucciones de 8 bits d incluir la librería Irvine32.inc para sepa que ensamblador utilizar 4 El orden de los segmentos del programa se cambia debido a que a si no se sigue el orden propuesto la herramienta de trazo no funciona adecuadamente b como el código es más importante este debe ir primero c el sistema operativo heredado exige ese orden d los ejemplos de los libros están incorrectos y hay que cambiarlos 5 Para modificar el código de 32 bits a 16 bits es necesario a Modificar todos los nombres de registros de 32 bits por su equivalente de 16 bits e inicializar el segmento de datos b Identar el código para que los márgenes sean mas claros y se puedan identificar las partes de 32 bits c mantener las directivas, nombres de procedimiento y etiquetas en el margen 0 para mayor claridad d modificar la inclusión de la biblioteca Irvine32 por la de Irvine16