Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MICROPROGRAMACIÓN
GUIA DE LABORATORIO
El proceso de ensamblado-enlazado-ejecución
El presente laboratorio pretende que el estudiante aplique los conocimientos para crear y depurar
programas en ensamblador,
Como podemos observar en la figura anterior existen cuatro (4) pasos para realizar este proceso
Paso 1: se utiliza un editor de texto para crear un archivo de texto ASCII, conocido como
archivo de código fuente, el cual debe tener un nombre terminado en .asm.
Paso 2: el ensamblador lee el archivo de código fuente y produce un archivo de código objeto,
una traducción del programa a lenguaje máquina. De manera opcional, produce un archivo de
listado. Si ocurre un error, el programador debe regresar al paso 1 y corregir el programa.
Paso 3: el enlazador lee el archivo de código objeto y verifica si el programa contiene alguna
llamada a los procedimientos en una biblioteca de enlace. El enlazador copia cualquier
procedimiento requerido de la biblioteca de enlace, lo combina con el archivo de código objeto y
produce el archivo ejecutable. De manera opcional, el enlazador puede producir un archivo .map
Paso 4: la herramienta cargador (loader) del sistema operativo lee el archivo ejecutable y lo
carga en memoria y se cargan los registros CS e IP lo que hace bifurca la CPU hacia la dirección
inicial del programa, para que éste empiece a ejecutarse.
Para verificar todo lo anterior se le pide que codifique en lenguaje ensamblador, compile, encadene y
ejecute el siguiente programa
.386
.nolist
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
.list
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\masm32.lib
.data
.code
start:
invoke ClearScreen
invoke locate,10,10
invoke StdOut,ADDR Msg1
invoke StdIn,ADDR Buffer,LENGTHOF Buffer
invoke locate,10,12
invoke StdOut,ADDR Msg2
invoke locate,10,13
invoke StdOut,ADDR Buffer
invoke ExitProcess,0
end start