Pregunta básica del ensamblador: traducción al código de máquina

1

¿Cómo funciona un ensamblador (a un nivel muy básico) en la traducción del lenguaje ensamblador al código de máquina?

[Lo que entiendo es que cuando se escribe un Programa, se escribe en texto y luego el ensamblador convierte estos "textos" en bits que la computadora entiende. Entonces, por ejemplo, si escribí MOV A, B, esto se guardará en la memoria con la ayuda de "teclado" (en 0s y 1s, que son básicamente pulsos eléctricos). Ahora, ya que estos bits guardados contendrán bits correspondientes a alfabetos como 'M', 'O' 'V' (El código ASCII), y así sucesivamente. Ahora lo que hará el ensamblador es comparar estos bits almacenados en la memoria (que son correspondiente a los "textos") a los bits ya almacenados en el "ensamblador". Por lo tanto, los bits de texto (MOV ...) coincidirán con algunos de estos bits de ensamblador (de muchos grupos de bits que están relacionados con otras palabras clave como MVI, ADD) y como resultado de estas comparaciones dará un "código de operación" relacionado con Texto "MOV". ¿Tengo razón o es esta una forma incorrecta de pensar? ]

    
pregunta Nanda Sinha

1 respuesta

1

En realidad, la 'conversión' entre el archivo de texto escrito por el usuario y el código de ensamblado / ejecutable real (binario) se realiza mediante un programa especial, llamado ensamblador.

Es un analizador de texto, que analiza todo el texto en partes (por ejemplo, el primer 'MOV', que sus operandos / argumentos. Uno por uno se traduce (y los elementos pueden almacenarse si es necesario).

Los análisis se basan en reglas, por ejemplo, si se encuentra 'M', 'O', 'V' en un archivo de texto, sabe que se debe traducir a, por ejemplo, opcode 0x40. Y también sabe qué esperar después (argumentos). Si estos son correctos, esos argumentos se traducirán, de lo contrario se mostrará un mensaje de error.

También se realiza la optimización dentro del ensamblador y otras configuraciones que afectan al código binario.

Actualización (según comentario):

Pasos:

  1. El usuario crea con un editor de texto el código de ensamblaje en forma de texto (por ejemplo, con comandos como texto MOV 1, A, SUB ...
  2. Esto se guarda en el disco en un archivo, por ejemplo, programa.a
  3. El usuario ejecuta un programa ensamblador
  4. Este programa lee el archivo program.a a la memoria.
  5. Traduce palabra por palabra y operando por operando el texto usando un analizador. El texto se traduce en códigos de operación y operandos.
  6. La mayoría de las veces hay un paso de optimización que elimina códigos de operación innecesarios o los convierte en mejores / más rápidos.
  7. Estos opcodes y operandos se almacenan en otro archivo, por ejemplo. program.exe (el ejecutable).
  8. Al ejecutar el programa, el archivo program.exe se lee en la memoria.
  9. La computadora / microcontrolador ejecuta el código en la memoria.
respondido por el Michel Keijzers

Lea otras preguntas en las etiquetas