Está en la página 1de 23

Procedimiento con Parámetros a través de la Pila

Chamba Carrasco Vilma, Mejía Flores Dora & Juan Carlo Merino Pozo

Diciembre 2017

Universidad Nacional de Piura

Facultad de Ingeniería Industrial

Facultad de Ingeniería Informática

Microcomputadoras I
Índice ii

INTRODUCCIÓN .......................................................................................................................... 1

OBJETIVOS DEL INFORME ....................................................................................................... 1

Objetivo General ......................................................................................................................... 1

Objetivos Específicos.................................................................................................................. 1

MARCO TEÓRICO........................................................................................................................ 2

Rutina .......................................................................................................................................... 2

DEFINICIÓN DE PILA ............................................................................................................. 2

DEFINICION DE PROCEDIMIENTO Ó RUTINA:................................................................. 3

Para delimitar el conjunto de instrucciones que forman un procedimiento se emplean las

palabras clave: PROC (comienzo del procedimiento) y ENDP (final del procedimiento). ........ 3

TIPOS DE PROCEDIMIENTOS ............................................................................................... 4

PASO DE PARÁMETROS A UN PROCEDIMIENTO ............................................................ 4

EJERCICIO DESARROLLADO EN LABORATORIO ............................................................... 6

Código del Programa .................................................................................................................. 7

Bibliografía ............................................................................................................................... 21
1

INTRODUCCIÓN

El presente informe pretende explicar que son los procedimientos o rutinas y

cómo se pueden pasar parámetros para su uso en un programa fuente para un procesador

8086, así como la codificación de un programa en lenguaje ensamblador donde se hace

uso de ellos.

Por lo cual, se presenta los resultados obtenidos en el quinto laboratorio con lo que

respecta a los procedimientos con parámetros a través de la pila para el procesador 8086

teniendo como base las clases teóricas desarrolladas en clase.

Se explicará detalladamente el funcionamiento de los programas para que estos sean de

fácil comprensión a través de capturas de pantalla, igualmente se mostrará su ejecución a

través del programa DOSBox 0.74.

OBJETIVOS DEL INFORME

Objetivo General

Conocer cómo realizar los procedimientos o rutinas con parámetros a través de la

pila de un programa fuente en lenguaje ensamblador para el procesador 8086.

Objetivos Específicos

 Conocer cómo realizar un procedimiento o rutina para un programa fuente

en lenguaje ensamblador para el procesador 8086.

 Conocer hacer uso de parámetros dentro de un procedimiento o rutina para

un programa fuente en lenguaje ensamblador para el procesador 8086.


2

 Realizar un programa fuente en lenguaje ensamblador para el procesador

8086 haciendo uso de procedimientos o rutinas con parámetros a través de

la pila.

MARCO TEÓRICO

Rutina

Una rutina o también llamada subrutina es una porción de programa claramente

definida que cumple una función específica y a la cual se puede llamar desde

cualquier parte del programa principal. Una rutina es equivalente a un método en

un lenguaje de alto nivel. Al igual que los métodos, las rutinas también reciben

parámetros, pero estos se deben apilar antes de hacer el llamado. Las rutinas

pueden ser cercanas o lejanas, las lejanas se encuentran en otro segmento de

código.

DEFINICIÓN DE PILA

 Es una parte de la memoria encargada de gestionar de forma adecuada los

procedimientos y las interrupciones

 Es una estructura LIFO (last in first out), es decir “ultimo en entrar primero en

salir.

 La gestión se realiza a través del puntero de pila SP y de su registro de segmento

asociado SS
3

 El tamaño de cada posiciones de 16 bits La pila crece hacia abajo (direcciones

decrecientes de memoria) con PUSH

 La pila decrece hacia arriba (direcciones crecientes de memoria) con POP

En la ilustración de muestra la estructura de la pila

DEFINICION DE PROCEDIMIENTO Ó RUTINA:

 Los procedimientos son un conjunto de instrucciones que se pueden ejecutar

desde muchos lugares diferentes de un programa, en vez de tener que repetir

muchas veces el mismo conjunto de instrucciones cada vez que se necesitan

 Los procedimientos se llaman mediante la instrucción CALL la cual transfiere el

control a un procedimiento llamado.

 La última instrucción de un procedimiento es la instrucción RET, la cual regresa

del procedimiento llamado al procedimiento original que hizo la llamada

 La dirección de retorno de un procedimiento (y en ciertos casos, procedimiento

tipo FAR, el segmento al que pertenece) se almacena en la pila

Para delimitar el conjunto de instrucciones que forman un procedimiento se emplean las

palabras clave: PROC (comienzo del procedimiento) y ENDP (final del procedimiento).
4

TIPOS DE PROCEDIMIENTOS

 A los procedimientos se les asignan dos atributos FAR (si se le va a llamar

desde otro

 segmento) y NEAR (si se le llama desde el mismo segmento)

 El procedimiento principal de un programa siempre es FAR

PASO DE PARÁMETROS A UN PROCEDIMIENTO

Existen 3 formas:

 Por registros

 Por memoria

 Por pila

En esta ocasión veremos el paso de parámetros por pila


5

Pasos a seguir:

1. Apilar los datos a transferir antes del llamado.

2. Ejecutar la llamada a la subrutina (tener en cuenta si es cercana” NEAR” y

lejana ”FAR”)

3. Dentro de la rutina se guardará en la pila los registros a utilizar.

4. Acceder a los datos que se transfieran.

MOV BP,SP

ADD BP,# 2X(Cantidad de Registros +Cantidad de direcciones de

retorno)

5. Tomar los parámetros de la pila. Ejemplo

MOV AX,[BP]
6

MOV BX,[BP+2]

6. Si hay valores a devolver se colocará en los espacios dejados por los

parámetros. Ejm

MOV [BP], DX

7. Desapilar los registros utilizados

8. Efectuar el retorno

9. Si hay datos retornados tomarlos de la pila.

Utilizamos POP lugar(registros ó variables)

10. Restaurar la cima de la pila al lugar original en el que se le encontró

EJERCICIO DESARROLLADO EN LABORATORIO

1. Elaborar subrutinas que reciban como parámetros a la cantidad de elementos en

un arreglo y a la dirección de inicio del arreglo; apelados en ese orden y que

calculen:

Subrutina 1: El promedio de los valores del arreglo devolviendo cociente y

residuo.

Subrutina 2: Encontrar el máximo de los valores del arreglo.

Subrutina 3: Encontrar el mínimo de los valores del arreglo.

Subrutina 4: La cantidad de números primos que hay en el arreglo.

Subrutina 5: La cantidad de valores pares que hay en el arreglo.


7

Los valores serán devueltos a través de la pila ocupando los lugares de los

parámetros recibidos desde la parte superior hasta el fondo de la pila. Los valores

del arreglo son de 16 bits, considerar subrutinas cercanas.

Código del Programa

En esta imagen se puede apreciar las líneas de código para la declaración de variables en

el segmento de datos, entre las declaraciones tenemos 8 arreglos de mensajes, 1 arreglo

con tamaño de 50 valores sin valor inicial, 1 arreglo de tamaño de 8 valores sin valor

inicial que cumple el papel de buffer de entrada, 8 variables sin valor las cuales son

usadas para almacenar los valores retornados por los procedimientos y 1 arreglo de

tamaño de 6 valores sin valor inicial que cumple el papel de buffer de salida.
8

En esta imagen se puede observar el Segmento de Pila el cual define a un arreglo sin

nombre con un tamaño de 30 valores de 16 bits sin valor inicial

En esta imagen se puede apreciar el Segmento de codigo el cual se rige por una estructura

predeterminada la cual contiene a la palabra clave ASSUME la cual sirve para colocar los

registros de segmentos en sus respectivas direcciones de inicio, una etiqueta de inicio y

las 2 lineas de codigo que sirven para colocar en el registro DS la direccion de inicio de

Datos.
9
10
11
12
13
14
15
16
17
18
19
20

En esta imagen se muestra los resultados al ejecutar el programa en el DOS Box


21

Bibliografía

-Lenguaje ensamblador de los 80x86 Jon Beltrán de Heredia Editorial Anaya-

Multimedia. 1996.

-Llamada de procedimientos, Josafat, Tijuana, Baja California, México.

-Notas tomadas en clase de subrutinas dictadas por el Ing. Víctor Hugo Valle Ríos.

-(s.f.). Obtenido de http://www.utp.edu.co/~eduque/arquitec/RUTINAS.PDF

También podría gustarte