Laboratorio1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

1er LABORATORIO DE ARQUITECTURA Y ORGANIZACION DE LA COMPUTADORA

1.1 Competencias para Laboratorio:

En este laboratorio los alumnos conocerán las herramientas que se va utilizar para trabajar con
el Lenguaje 1 Ensamblador. Para ello se hará uso de los siguientes programas:
- Un procesador de texto - Masm.exe
- Linx.exe - Td.exe
Por otro lado, el alumno conocerá la estructura de un programa en ensamblador.
Realizara la definición de segmentos: datos, pila, código. Conocerá su importancia dentro de un
programa.

1.2 Introducción Teórica:

La estructura de un programa en ensamblador es la que se presenta en la siguiente figura


1.1:
Pila segment stack ; Declara el segmento de pila
...
Pila ends
Datos segment ; Declara el segmento de datos
...
Datos ends
Codigo segment ; Declara el segmento de codigo
inicio proc far
assume cs:codigo, ds:datos, ss:pila
...
inicio endp
Codigo ends
end inicio

figura 1.1 Estructura básica de un programa en Lenguaje Ensamblador

Como vemos está conformado por tres segmentos que son: pila, datos, código.
Un programa ensamblador contiene dos tipos de sentencias: Instrucciones y Directivas.
 Las instrucciones son representaciones simbólicas del juego de instrucciones del
microprocesador. En el programa modelo se tiene las siguientes instrucciones:
- Mov.- Transfiere un byte o palabra desde el operando fuente al operando destino.
- Lea.- Transfiere el desplazamiento del operando fuente al operando destino.
- Int.- Activa el procedimiento de instrucción especificado por el operando.
- Ret.-Retorna de un procedimiento.
- Push.- pone una palabra en la pila.
 Las directivas indica al ensamblador que hacer con las instrucciones y datos. En el programa
modelo se tiene las siguientes directivas:
- Assume.- Indica al ensamblador el registro del segmento que se va ha utilizar para
direccionar cada segmento dentro del módulo, para al segmento de código: cs, para el
de datos: ds, para el de pila: ss .
- Segment.- indica el inicio del segmento “nombre”. El final del segmento se indica
mediante ends.

1
Dra. Ing.Sally Torres Arquitectura y organización de la computadora
- Db.- reserva memoria para una variable tipo byte (8 bit), inicializando o no dicho byte y
los posteriores.

1.2.1 Conceptos fundamentales de compilación:

Para crear un programa en ensamblador se requiere de varias herramientas:


- Un editor para crear el programa fuente.
- Un compilador que no es mas que un programa que traduce el programa fuente en programa
objeto.
- Un montador (Enlazador) o Linker, que genere el programa ejecutable a partir del programa
objeto.

MASM es el compilador del Lenguaje Ensamblador, este compilador permite hacer el análisis de
la sintaxis del programa (comprobar si está correctamente escrito nuestro programa) y emitirá los
errores indicando la línea de error. Se invoca desde la línea de comando directamente o, en
caso de contar con él, desde un editor previa configuración. Su enlazador será LINK ya que no
crea programas ejecutables. El2 compilador da por resultado el archivo objeto (*.obj) el cual sirve
para crear un archivo ejecutable (*.exe).

LINK es un montador (Enlazador) que permite crear a partir del archivo OBJ o la combinación de
varios de estos archivos, el código ejecutable del programa con extensión EXE o también con
extensión COM dependiendo de la forma en que se ensamblo.

TD lo utilizaremos para analizar paso a paso la ejecución de un programa. Los campos del TD se
muestran en la figura 1.2 y la interface se muestra en la figura 1.32. En la pantalla del TD se
puede ver:

CS:000 B8C953 MOV AX,53C9 AX 53C9 C=0


Registro de .
Uso común .D=0
B
SEGMENTO DE CODIGO A
DS 53B7 N
(PROGRAMA) Registros de D
Segmentación E
R
Otros registros A
S

DS: 0012 SS: 0102


SEGMENTO DE DATOS SEGMENTO DE PILA

figura 1.2 Campos de la Interface del TD

2
Dra. Ing.Sally Torres Arquitectura y organización de la computadora
figura 1.3 Interface del TD

1.3 Inicio de trabajo:

1. Llamar al Procesador de texto en el caso utilizaremos el bloc de notas y escriba el código del
programa en él (programa modelo) nómbrelo como Lab1 y le pone la extensión asm
(Lab1.asm).
2. Compile el programa modelo con el masm.exe (figura 1.4) con el fin de generar dos archivos
un Object y un listing (este contiene mayor información, resultado de la compilación). Este
archivo se crea cuando se coloca la opción /L.
C:\...\escritorio>Masm Lab1.asm/L
Figura 1.4 forma de compilar un programa

Se crea los archivos: Lab1. obj Lab1. lst


Si es que no hay errores en la sintaxis del programa o en la compilación.
3. Con el procesador de texto se puede ver nuestro archivo Lab1.LST el cual contiene mayor
información de cómo esta nuestro programa.
4. Cree el ejecutable Lab1.exe de nuestro programa con la ayuda de link.exe.
C:\...\escritorio>Link lab1.obj
5. Verificar paso a paso el funcionamiento de nuestro programa con ayuda del TD.
C:\...\Escritorio>TD lab1.exe

1.4 Orden de Realización del Laboratorio

1.- Modificar el programa modelo de acuerdo a sus datos personales. 3


2.- Escribir el programa modificado en el procesador de texto Bloc de notas.
3.- Compilar el programa *.asm con el compilador masm.exe y obtener los archivos: *.obj, *.lst.
4.- En el caso de que surjan errores corregirlos. Debe observar el número de línea de error.
5.- Crear el programa ejecutable *.exe con el montador Link.exe
6.- Correr el programa generado y comprobar su correcta ejecución.
7.- Comprobar paso a paso la ejecución del programa con el turbo Debugger.

1.5 Resultados del laboratorio

Como resultado del laboratorio deberá de documentar los siguientes resultados:

1.- El listing. Archivo Lab1.lst


2.- Resultados de la ejecución del programa. La pantalla del símbolo del sistema donde se
muestre sus datos personales.
3
Dra. Ing.Sally Torres Arquitectura y organización de la computadora
3.- Resultados transitorios del programa en el TD, que demuestren su correcto funcionamiento.
Es decir, el programa lab1.exe cargado y corrido hasta el punto donde el registro IP tenga un
desplazamiento de 5.

1.6 Programa Modelo

Pila segment stack ; Declara del segmento de pila


db 128 dup('pila')
Pila ends
Datos segment ; Declara segmento de datos
universidad db 'Universidad nacional del Callao',13,10,'$'
facultad db 'nombre de la facultad', 13, 10, '$'
escuela db 'Escuela profesional', 13, 10, '$'
cod db 'codigo del estudiante ', 13, 10, '$'
nombre db 'nombres del estudiante', 13, 10, '$'
apellido db 'Apellidos del estudiante', 13, 10, '$'
Datos ends
Codigo segment ; Declara segmento de codigo
inicio proc far
assume cs:codigo, ds:datos, ss:pila
;Poner en la pila la dirreccion de retorno al DOS
push ds
sub ax,ax
push ax
;inicializa el segmento de datos con su registro de segmentación
mov ax,datos
mov ds,ax
lea dx,universidad ;Poner en dx la dirección de los datos "universidad"4
mov ah,09h ;Mover a ah el código de la función de salida de una línea de
; caracteres en la pantalla para la interrupción del DOS
int 21h ; Llama a la interrupción 21h
lea dx,facultad
mov ah,09h
int 21h
lea dx,escuela
mov ah,09h
int 21h
lea dx,cod
mov ah,09h
int 21h
lea dx,nombre
mov ah,09h
int 21h
lea dx,apellido
mov ah,09h
int 21h
ret ;retorno al DOS
inicio endp
codigo ends
end inicio

4
Dra. Ing.Sally Torres Arquitectura y organización de la computadora

También podría gustarte