Tema 4. La pila, los procedimientos y las macros

Documentos relacionados
Tema 5: La pila, las macros y los procedimientos

Arquitectura de Computadores II 8086 Parte II

Tema 3: ASCII y operaciones de desplazamiento y lógicas

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Intel Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 1/32 14-DIRECTIVAS

ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS. Características de un Ensamblador de Archivo

Tema 5.1: Presentación de datos en pantalla

Arquitectura (Procesador familia 80 x 86 )

Tema 2. Presentación de datos por pantalla. La ROM-BIOS

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Tema 5. Presentación de datos por pantalla

Ensamblador. Introducción. Dpto. Física y Arquitectura de Computadores. Universidad Miguel Hernandez

Tema 4. Lenguaje máquina y lenguaje ensamblador

Conceptos de Arquitectura de Computadoras Curso 2015

Instrucciones de Control de Flujo y Usos de la Pila

Tema 4. Lenguaje máquina y lenguaje ensamblador

SISTEMAS BASADOS EN MICROPROCESADORES

P1.- Para facilitar la tarea, suponemos definido en el segmento de datos lo siguiente:

Sobre cómo dividir un programa ensamblador x86 (modo Real) en módulos compilables por separado.

Resumen de las instrucciones del 8086/8088

Parámetro de entrada. Un parámetro pasado del procedimiento que hace la llamada al procedimiento invocado.

SISTEMAS BASADOS EN MICROPROCESADORES

SISTEMAS BASADOS EN MICROPROCESADOR 2º Grado Ingeniería Informática (EPS UAM) EXAMEN FINAL EXTRAORDINARIO JULIO 2013 ENUNCIADO DEL PROBLEMA

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

Intel 8086 modelo básico (primera parte) Registros:

8.4. El software en los μprocesadores

Tema 4: Lenguaje máquina - Lenguaje ensamblador

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL SAN NICOLÁS INGENIERIA EN ELECTRÓNICA

Práctica 4. Lenguaje máquina y lenguaje ensamblador

SISTEMAS BASADOS EN MICROPROCESADORES

6-REGISTROS DEL 8086 Y DEL 80286

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

DIRECTIVAS DEL ASM86

Construyendo Programas más Complejos

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

Comparaciones en lenguaje ensamblador

1.2.- EL MICROPROCESADOR.

MÓDULO III PROGRAMACIÓN DEL MICROPROCESADOR

Examen de Arquitectura de Computadores 2 22 de febrero del 2011

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15

Arquitectura de Computadores II Introducción al 8086

PRONTUARIO I. INFORMACIÓN GENERAL

Práctica 3: El teclado del PC

ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO

La Pila en los Procesadores IA-32 e Intel c 64

[etiqueta:] REP MOVSn

Estructura de Microprocesadores. Profesor Ing. Johan Carvajal Godínez

LENGUAJE ENSAMBLADOR PRÁCTICA 11 PRÁCTICA 11 CUATRO OPERACIONES FUNDAMENTALES EN NÚMEROS DE 8 BYTES

TAREA 1 ARITMETICA PARA BCD Y ASCII.

Programas Residentes En Lenguaje Ensamblador

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

Práctica 2. Registros y posiciones de memoria

Nombre del módulo: Instalación de Sistemas Microprocesados. Guía sobre Programación en Ensamblador usando Emulador (emu8086)

Paso de parámetros y gestión del marco de pila

El nivel ISA (II)! Conjunto de Instrucciones

Alternativas de programación

CAPÍTULO 3 PROGRAMACIÓN EN AMBIENTE DE PC

El Diseño de un Lenguaje Máquina

SISTEMAS BASADOS EN MICROPROCESADORES (2º - GRADO ING. INFORMÁTICA) EJERCICIO CLASE

Introducción al ensamblador 80x86

Trabajo Práctico Nro 3: Assembler

Fig. 1: Tipos de datos que puede manejar el procesador

Ciclos de máquina. Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp

LENGUAJE ENSAMBLADOR PRÁCTICA 16 PRÁCTICA 16

Conmutación de Tareas

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Funcionamiento del 8086/8088

Fecha de Introducción. Velocidad de reloj. Anchura del bus. Número de transistores. (microns) Memoria direccionable.

Instrucción De Salto Incondicional

Tiempo de Compilación. Programa fuente. Secuencia. de caracteres. Scanner. Secuencia. de símbolos Parser. Compilador.

2 de septiembre de 2010 Hoja: 1 / 10. Solamente existe una opción válida en las preguntas de respuesta múltiple.

MANUAL DE PROGRAMACIÓN EN ENSAMBLADOR 8086

EL EMU8086 Y EL MICROPROCESADOR 8086.

Aprendiendo Sistemas Operativos: Programación de Procesadores de Arquitectura IA-32

ARQUITECTURA DEL MICROPROCESADOR 8086

Todos los comandos de DEBUG se invocan usando una sola letra y son los siguientes:

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Relación de Problemas I

Ingeniería en Sistemas. Sistemas Operativos. Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador.

Mod. I, Unid. 1, Obj. 1 CRITERIO DE DOMINIO 1/1

El microprocesador de 16 bits 8086

Iniciación del mouse El servicio utilizado es el 00, este servicio inicializa el controlador del mouse como sigue:

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Funcionamiento de la Pila (o stack)

Tema 5. Estructura de datos Pila


Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Apellidos Nombre DNI

Ejemplo del uso de las subrutinas

MANEJO DEL MOUSE EN LENGUAJE C++

Práctica 1. Introducción a la programación en ensamblador

La arquitectura del 8086/8088

Departamento de Sistemas e Informática

Ejercicios del tema 4. El procesador

Manual de Programación X86 sobre plataforma FPGA.

REPERTORIO DE INSTRUCCIONES DEL MICROPROCESADOR 8086

Arquitectura de Computadores. Apellidos, Nombre:

Transcripción:

Tema 4. La pila, los procedimientos y las macros Laboratorio de Estructura y Organización de Computadores Grados en Ingeniería Informática e Ingeniería de Computadores Curso 2012-2013 2010-2011 Índice Instrucciones de manejo de bits La pila Definición de procedimientos Tipos de procedimientos: NEAR y FAR Paso de parámetros a un procedimiento: Mediante registros Mediante la pila Estructuras y paso de parámetros Macros y procedimientos 2 / 25 1

Instrucciones de manejo de bits (I) Nombre: TEST Formato: TEST destino, origen Es igual que la operación AND ( Y lógica) pero no se guarda el resultado en destino. Se realiza a nivel de bit y modifica los flags de estado ; AX = 1234, BX = 0000 TEST AX, BX ; AX =1234, BX = 0000, Resultado = 0000 JZ Es_Cero ; Salta si es cero a la posición Es_Cero 3 / 25 Instrucciones de manejo de bits (II) Nombre: CLI Formato: CLI Desactiva las interrupciones Las interrupciones no enmascarables no se pueden inhibir CLI 4 / 25 2

Instrucciones de manejo de bits (III) Nombre: STI Formato: STI Permite las interrupciones STI 5 / 25 Instrucciones de manejo de bits (IV) Nombre: CLC Formato: CLC Desactiva el flag de acarreo CLC 6 / 25 3

Instrucciones de manejo de bits (V) Nombre: STC Formato: STC Activa el flag de acarreo STC 7 / 25 Instrucciones de manejo de bits (VI) Nombre: CLD Formato: CLD Pone a cero el flag de dirección (para trabajar con las instrucciones de cadenas) CLD 8 / 25 4

Instrucciones de manejo de bits (y VII) Nombre: STD Formato: STD Pone a uno el flag de dirección (para trabajar con las instrucciones de cadenas) STD 9 / 25 La pila Es una parte de la memoria encargada de gestionar de forma adecuada los procedimientos y las interrupciones Estructura LIFO (Last In First Out) La gestión se realiza a través del puntero de pila SP y de su registro de segmento asociado SS El tamaño de cada posición es 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 10 / 25 5

Definición de procedimientos 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 última instrucción de un procedimiento es la instrucción RET 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) 11 / 25 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 (implícito) Ejemplo de definición de un procedimiento ImprimeTira PROC FAR ; es un procedimiento que llama MOV AH, 09h ; a la función 9h del DOS para imprimir. INT 21h ; una cadena de caracteres dadas en DS:DX RET ; retorno de procedimiento ImprimeTira ENDP 12 / 25 6

Paso de parámetros mediante registros a un procedimiento Normalmente se emplean los registros para pasar parámetros a un procedimiento y para devolver el resultado del mismo. Ya que tenemos un número limitado de registros, puede que se modifiquen los registros dentro de un procedimiento. En cuyo caso perderemos los valores que tenían antes de la llamada. Por ello, se deben salvar en la pila todos los registros que se empleen en el procedimiento, como el primer grupo de instrucciones. También se deben recuperar antes de volver del procedimiento los valores originales de los registros. De todos menos de aquellos en los que se devuelvan los resultados del procedimiento. 13 / 25 Paso de parámetros mediante la pila a un procedimiento NEAR (I) Acciones del módulo llamador Los parámetros se encuentran dentro del mismo segmento. Indicaremos pues su desplazamiento (LEA) o la variable en sí Módulo llamador: MOV AX, VARIABLE1 PUSH AX LEA AX, VARIABLE2 PUSH AX... CALL Nombre_Proc Estructura de la pila 14 / 25 7

Paso de parámetros mediante la pila a un procedimiento NEAR (II) Acciones del módulo llamado 1. Almacenamos en la pila el registro BP, que es el que emplearemos para elegir el elemento que se desee de la pila (PUSH BP) 2. Ponemos el valor del puntero de pila en BP (MOV BP, SP) 3. Se recogen los parámetros a través de BP. En general el desplazamiento de un parámetro i será igual a: [BP] + 4 + 2 (n - i) Módulo llamado: Nombre_Proc PROC PUSH BP MOV BP,SP Estructura de la pila PUSH [registros usados] MOV AX,[BP+4] ;VARIABLEn... MOV BX,[BP+4+2 (n-i)] 15 / 25 Paso de parámetros mediante la pila a un procedimiento NEAR (y III) Acciones del módulo llamado Argumento de la instrucción RET desde el módulo llamado Indica el número de posiciones de la pila que se desean eliminar Será siempre el doble del número de parámetros. Si se le pasan 4 parámetros el argumento será 8. Es decir, RET 8 Estructura de la pila Procedimiento llamado: POP [registros usados] POP BP RET 2 n Nombre_Proc ENDP 16 / 25 8

Paso de parámetros mediante la pila a un procedimiento FAR (I) Acciones del módulo llamador Los parámetros se encuentran dentro de diferente segmento. Indicaremos pues su desplazamiento (LEA) y el segmento al que pertenece. Procedimiento llamador: LEA AX, VARIABLE1 PUSH DS PUSH AX LEA AX, VARIABLE2 PUSH DS PUSH AX... CALL PROCEDIMIENTO 17 / 25 Paso de parámetros mediante la pila a un procedimiento FAR (y II) Acciones del módulo llamado 1. Almacenamos en la pila el registro BP, que es el que emplearemos para elegir el elemento que se desee de la pila (PUSH BP) 2. Ponemos el valor del puntero de pila en BP (MOV BP, SP) 3. Se recogen los parámetros a través de BP. En general el desplazamiento de un parámetro i será igual a: [BP] + 6 + 4 (n - i) y el segmento al que pertenece: [BP] + 8 + 4 (n - i) Argumento de la instrucción RET desde el módulo llamado: Indica el número de posiciones de la pila que se desean eliminar Será siempre el cuádruple del número de parámetros. Si se le pasan 4 parámetros el argumento será 16. Es decir, RET 16 18 / 25 9

Estructuras y paso de parámetros (I) Estructuras Las estructuras se definen con un identificador de comienzo de estructura STRUC y un delimitador de final ENDS Agrupan varios tipos de datos o campos bajo un mismo nombre Se puede acceder a cada campo mediante el nombre de la estructura punto nombre del campo Se suelen emplear para simplificar el paso de parámetros mediante la pila y el cálculo del argumento de RET DNI STRUC Nombre_y_Apellidos DB 50 DUP ( 0 ) Domicilio DB 60 DUP ( 0 ) Edad DB 0 Profesion DB 15 DUP ( 0 ) DNI ENDS 19 / 25 Estructuras y paso de parámetros (II) Código y campos de la estructura: Estructura STRUC bp0 DW? ; 2 bytes para guardar BP retorno DW? ; Equivale a un desplazamiento de +2 bytes (los ; del primer DW denominado bp0) respect ; comienzo de la estructura p2 DW? ; Equivale a un desplazamiento de +4 bytes ; (DW + retorno) respecto al comienzo la estruc. P1 DW? ; Equivale a un desplazamiento de +6 bytes ; (DW+retorno+p2) respecto al comien de la estruc. Estructura ENDS NRET EQU OFFSET p1 - OFFSET retorno 20 / 25 10

Estructuras y paso de parámetros (y III) Acciones del módulo llamado 1. Almacenamos en la pila el registro BP, que es el que emplearemos para elegir el elemento que se desee de la pila (PUSH BP) 2. MOV BP, SP 3. Acceso a parámetros con la estructura y BP Módulo llamado 4. El argumento de RET será NRET Prueba PROC NEAR Ejemplo de la estructura definida antes Estructura struc bp0 DW? retorno DW? p2 DW? p1 DW? Estructura ends NRET EQU OFFSET p1 - OFFSET retorno PUSH BP MOV BP, SP PUSH AX MOV AX, [BP].p1 ADD [BP].p2, AX POP AX POP BP RET NRET Prueba ENDP 21 / 25 Las macros Las macros son nombres que se le dan a trozos de código. Dentro del código se pueden llamar, pero en lugar de saltar a la zona donde están definidas, se expande (se copia) el código sustituyendo a la llamada. Si se le pasan más parámetros los ignorará. Si se le pasan más parámetros ignorará las instrucciones que los usen. Hay que tener cuidado con las etiquetas definidas dentro de una macro ya que se expanden también duplicando los nombre de las mismas 22 / 25 11

Las macros (II) Nombre: MACRO Formato: nombre_macro MACRO lista de parámetros especifica el nombre y los parámetros de la macro. Los parámetros se separan por comas. El final de la macro se especifica mediante la directiva ENDM. Nombre y formato: ENDM indica el final de una macro sumar MACRO operando1, operando2, resultado ENDM ;cuerpo de la macro 23 / 25 Las macros (III) Nombe: LOCAL Formato: LOCAL etiqueta,[etiqueta,...] indica al ensamblador las etiquetas que debe cambiar cada vez que se expande la macro. Con ello se evita las definiciones múltiples de estas etiquetas. Sólo puede usarse dentro de la definición de una macro y debe situarse inmediatamente después del la línea del nombre de la macro. retardo MACRO numero local seguir mov cx, numero seguir: ENDM loop seguir 24 / 25 12

Diferencias entre las macros y los procedimientos 25 / 25 13