Está en la página 1de 2

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERÍA Y ARQUITECTURA


ESCUELA DE INGENIERÍA DE SISTEMAS INFORMÁTICOS

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.

ML /c /coff /Fl nombre.asm ➔ produce nombre.obj ; nombre.lst

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

LINK /map /subsystem:console nombre ➔ produce nombre.exe ; nombre.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

.model flat, stdcall


option casemap :none ; case sensitive

.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

Buffer db 127 dup(" "),0


Msg1 db "Introduzca cualquier texto (127 maximo)> ",0
Msg2 db "Usted Digito: ",0

.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

También podría gustarte