Articulo de referencia

A86 (software)

A86 es un ensamblador para MS-DOS que genera código de 16 bits para la familia de microprocesadores Intel x86 . Escrito por Eric Isaacson, se distribuyó como shareware en junio ...

A86 es un ensamblador para MS-DOS que genera código de 16 bits para la familia de microprocesadores Intel x86 . Escrito por Eric Isaacson, se distribuyó como shareware en junio de 1986. Isaacson fue una de las dos personas que implementaron el ensamblador oficial ASM86 de Intel, lanzado en 1982.

El ensamblador A86 está contenido en un ejecutable de 32K y puede producir directamente un archivo COM o un archivo objeto para usar con un enlazador estándar . Viene con un depurador , D86 . [ 1 ] [ 2 ] La velocidad de ensamblaje es un punto de venta principal, e Isaacson afirmó que A86 podía ensamblar 100 000 líneas de código fuente por segundo en un Pentium II o superior. [ 3 ] El soporte de 32 bits se agregó a mediados de la década de 1990 en forma de A386 y D386 . [ 1 ] [ 2 ] Estos no se distribuyeron como shareware, sino que se proporcionaron a los usuarios que registraron A86.

Si bien admiten la sintaxis x86 esperada, A86 y A386 no requieren directivas como ASSUME`<script>`, SEGMENT`<script>` y ` <script> PROC`, que Microsoft Macro Assembler y otros ensambladores contemporáneos utilizan. A86 y A386 tienen una sintaxis personalizada para macros y etiquetas locales que es incompatible con otros ensambladores. También existen diversas modificaciones sintácticas que permiten un código fuente más conciso.

La familia de productos A86 nunca se adaptó a Windows , pero es posible usar los archivos objeto creados por A386 con un enlazador de Windows. [ 4 ] El ensamblador no admite código de 64 bits .

Características específicas del A86

Si se producen errores durante el ensamblaje, los mensajes de error se insertan directamente en el código fuente para que puedan encontrarse mediante búsquedas en editores de texto. [ 3 ] Los mensajes se eliminan automáticamente si ya no son relevantes. Este comportamiento puede desactivarse mediante una opción de línea de comandos.

Cualquier etiqueta que consista en una letra seguida de uno o más dígitos es local, lo que significa que se puede redefinir según sea necesario, y cada definición reemplaza a la anterior. El manual recomienda usar L1through L9para código normal y M1through M9en macros . Se asume que las bifurcaciones a etiquetas locales son hacia atrás, pero se puede especificar una bifurcación hacia adelante anteponiendo a la referencia de la etiqueta el símbolo mayor que (por ejemplo, >L2).

Los números que comienzan con un cero son hexadecimales , como 00FF, en lugar de usar un prefijo como "0x" o "$". Una "K" al final indica kibibytes . [ 5 ]16K es lo mismo que 16*1024 o 16384.

Se pueden insertar o extraer varios registros en la misma línea fuente. push eax, edx, ebpGenera una instrucción para cada uno de los tres operandos .

Hay una forma abreviada para ejecutar condicionalmente una sola instrucción. if z mov ax,bxGenera dos instrucciones: una bifurcación condicional seguida del movimiento.

Si retse especifica como etiqueta para una bifurcación condicional, apunta automáticamente a una instrucción de retorno dentro del rango de bifurcación de 8 bits (por ejemplo, jz ret).

Las macros utilizan una sintaxis diferente a la de los ensambladores contemporáneos.

Huella digital del código

El ensamblador fue diseñado para usar codificaciones de instrucciones específicas que son funcionalmente equivalentes, pero que juntas crean una huella digital incrustada en el archivo ejecutable . Esto se menciona en la sección de términos legales del manual. La huella digital permite determinar si el código fue ensamblado con A86 y también distinguir entre versiones registradas y no registradas del ensamblador. [ 6 ]

Referencias

  1. 1 2 Isaacson, Eric (2008). "Ensamblador A86/A386 y depurador D86/D386" . Archivado del original el 2 de julio de 2008. Recuperado el 2 de julio de 2008 .
  2. 1 2 Randall Hyde. "¿Cuál ensamblador es el mejor?" . Archivado del original el 15 de mayo de 2008 . Recuperado el 18 de mayo de 2008 .
  3. 1 2 Isaacson, Eric (2006). "Características A86/A386 y D86/D386" .
  4. Isaacson, Eric (2006). "Programación A386 y Win32" .
  5. Hague, James (20 de julio de 2008). "Constantes de kilobyte, una idea simple y hermosa que no ha calado" . Programación en el siglo XXI .
  6. El-Khalil, Rakan; Keromytis, Angelos D. (2004). "Hydan: Ocultando información en binarios de programas" (PDF) . En López, Javier; Qing, Sihan; Okamoto, Eiji (eds.). Seguridad de la información y las comunicaciones: 6.ª Conferencia Internacional, ICICS 2004, Málaga, España, 27-29 de octubre de 2004 : Actas . Lecture Notes in Computer Science. Vol. 3269. Springer . pág. 190. ISBN    3-540-23563-9.