Funcionamiento de la Pila (o stack)

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

MEMORIA EJERCICIO 1 EJERCICIO 2

Departamento de Electrónica Electrónica Digital. Mapas de memoria. Bioingeniería Facultad de Ingeniería - UNER

Ejemplo del uso de las subrutinas

La decodificación y el mapeo de memoria es importante porque permite conectar mas de un dispositivo al microprocesador.

Análisis general de un Microprocesador

Introducción a la arquitectura de computadores

Conceptos de Arquitectura de Computadoras Curso 2015

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

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

Tema 5.- Memorias. ---***---

Tema: MAPAS DE MEMORIA: LÓGICA DE SELECCIÓN, GESTIÓN Y ORDENACIÓN DE LA MEMORIA. J. Luis Lázaro, J. Jesús García "MAPA DE MEMORIA" 0

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

8.4. El software en los μprocesadores

TEMA 2. Memorias ROM, PROM, EPROM y E2PROM. Memorias FLASH. Memorias FIFO y LIFO. Diseño de circuitos lógicos empleando PROMs.

Ejercicios del tema 4. El procesador

(1) Unidad 1. Sistemas Digitales Basados en Microprocesador SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Mapas de Memoria y E/S

LECCIÓN 14: DISEÑO DE COMPUTADORES MEDIANTE MICROPROGRAMACION

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

MICROCONTROLADORES PIC16F84 ING. RAÚL ROJAS REÁTEGUI

Entorno de Ejecución del Procesador Intel Pentium

Arquitectura (Procesador familia 80 x 86 )

SISTEMAS OPERATIVOS Arquitectura de computadores

Estructura de Computadores Ingeniería Técnica en Informática de Sistemas. BOLETIN 4: Memoria

UNIDAD 3 ARQUITECTURA DEL Z80. Microprocesadores Otoño 2011

Sistemas Electrónicos Digitales

Velocidades Típicas de transferencia en Dispositivos I/O

Mapeo en el P 8086 de Intel

Instituto Tecnológico de Morelia

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

Lo que definimos como CPU (Central Process Unit) o Unidad Central de Proceso, está estructurado por tres unidades operativamente diferentes:

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas

LECCIÓN N 13 MICROCOMPUTADORES

Tema 5: Memorias. Índice Conceptos básicos Parámetros característicos Jerarquía de memoria Memoria principal Tecnologías Estructura Mapa de memoria

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

Microprocesadores, Tema 2:

Tema 2: Lenguaje máquina. La interfaz entre el hardware y el software

CICLOS DEL PROCESADOR

EL ORDENADOR A. PERIFÉRICOS. B. UNIDAD CENTRAL. 1. HARDWARE Y SOFTWARE. 2. FUNCIONAMIENTO DE UN SISTEMA INFORMÁTICO 3. CONCEPTO DE SISTEMA INFORMÁTICO

Instrucciones de Control de Flujo y Usos de la Pila

Tutoría 2. Banco de memoria de 8 y 16 bits (8086)

Tema 5. Estructura de datos Pila

ESTRUCTURA DE COMPUTADORES PROBLEMAS DEL TEMA 1

ESTRUCTURA BÁSICA DE UN ORDENADOR

Organización del Computador I 1er. Parcial 17-Mayo Turno:

APUNTE DEL 8155 ELECTRÓNICA DIGITAL III

Relación de Problemas I

PROCESADORES. Existen 3 tipos de procesadores: DE GALLETA, DE PINES Y DE CONTACTO. DE GALLETA: se utilizaban en las board en los años 80 y 90.

Clasificación del procesador según el número de referencias a memoria.

Tema 5: La pila, las macros y los procedimientos

Arquitectura de Computadores II

SUBSISTEMA DE ENTRADA-SALIDA. Arquitectura de Computadores I 4º tema

MICROPROCESADORES PARTES DE UN MICROPROCESADOR

Arquitectura de computadoras

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

INDICE Programa Entrada Unidad de control Unidad aritmética y lógica (ALU)

Microcontroladores PIC de Microchip: generalidades

Procedimiento para el diseño de un mapa de memoria de un sistema basado en microprocesador:

PRINCIPALES COMPONENTES DE LA PLACA MADRE NAYAT C. BENSALEM MEDINA LUCAS BALDÁN MANZANO HELENA MEDINA SÁNCHEZ 2º BACHILLERATO B

PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS

2.2-1 Visión Interna PIC16F873/876. SBM

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Nivel ISA. Revisión y resultados parcial 1

Funcionamiento del 8086/8088

Introducción a la Programación en Lenguaje Ensamblador.

FUNCIONAMIENTO DEL ORDENADOR

Arquitectura de Computadores

Construyendo Programas más Complejos

Unidad I: Organización del Computador. Ing. Marglorie Colina

1.1 Introducción y definición de un microcontrolador 1.2 Estructura básica de un microcontrolador 1.3 Características de la Arquitectura

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

1-Componentes Físicos y Lógicos de un Ordenador.

TAD: Pila. TALLER: TAD Pila

Problemario: Memoria / Entrada Salida / Buses / Interrupciones

Práctica final. Emilia Cruz Fernández Martínez

28/09/2012. Interfaz con Dispositivos de Salida. Interfaz con Dispositivos de Entrada. Port Mapped. Memory mapped. Interfaz con Dispositivos I/O

Arquitectura de Computadores II Clase #3

Estructura del Computador

Tema 4: SISTEMAS DE ENTRADA/SALIDA. Un computador no puede estar formado sólo por la CPU y la memoria.

El nivel ISA (II)! Conjunto de Instrucciones

Lenguaje Máquina del Motorola 68000

El microprocesador de 8 bits Z80

Todos los sistemas basados en procesadores tienen dos tipos de memorias:

1. Arquitectura del sistema; arquitectura del microprocesador.

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN

EL MICROPROCESADOR INTRODUCCION

Gestión de Entrada-salida

Procesador. Memoria. Ejemplo de un Procesador: MU0. Instrucciones. Direcciones. Registros. Datos. Instrucciones y datos SETI Tr.

Qué es un programa informático?

Registros de desplazamiento

3 - Arquitectura interna de un up

Diagrama a bloques de una computadora

ESTRUCTURA FÍSICA DEL µp 8086

Tema: Microprocesadores

TEMA 1: Concepto de ordenador

Transcripción:

Funcionamiento de la Pila (o stack) Todo μp cuenta con una memoria de almacenamiento temporal denominada Pila Es una estructura de datos de tipo secuencial (LIFO) Existen dos operaciones básicas posibles: apilar y desapilar Solo se tiene acceso a la parte superior de la pila (último objeto apilado) Es necesaria para el funcionamiento de las instrucciones de llamado y vuelta de subrutinas (CALL y RET), las instrucciones PUSH y POP, entre otras En algunos μp la pila esta formada por un conjunto de registros internos (Ej PICs) En otros casos (Intel 80XX, Z80) la pila utiliza memoria de datos (RAM) para la pila junto a un registro específico en el μp llamado stack pointer (puntero de pila)

Registros internos: stack pointer Registros internos de un μp genérico (inspirado en el Intel 8085): 8 bits flags (Z, C, etc) A B C D E H L SP (puntero de pila) PC (contador de programa) acumulador registros de uso general 16 bits Funcionamiento de la instrucción PUSH usando el registro SP: PUSH BC Después de ejecutar la instrucción: (SP-1) B (SP-2) C SP SP-2 Funcionamiento de la instrucción POP: POP DE Después de ejecutar la instrucción: E (SP) D (SP+1) SP SP+2

Instrucciones PUSH y POP: los registros pares Un ejemplito del uso de las instrucciones PUSH y POP: 2100h: MVI B,7 MVI A,0 PUSH BC MVI B,3 ADD B POP BC DCR JNZ B 2100h Qué valor queda en A? Qué valor debería tener SP para que este ejemplo funcione? En el caso del μp 8085, la instrucción PUSH apila siempre un par de registros Estos pares solo pueden ser: B-C D-E H-L flags-a Por otro lado, la instrucción POP desapila registros también de a pares A la unión de registros simples (de 8-bits) en pares se la denomina registro-par Un registro par se puede pensar como un registro único de 16-bits

Las subrutinas Instrucciones CALL y RET: subrutinas Pueden pensarse como subprogramas dentro de un programa principal (PP) Se encargan, en general, de resolver tareas específicas Según el lenguaje, se las conoce también como: procedimientos o funciones Los μp cuentan en general con instrucciones para invocar subrutinas (CALL) e instrucciones para retornar de las subrutinas al PP (RET) Funcionamiento de la instrucción CALL usando el registro SP: CALL dir_sub Después de ejecutar la instrucción (dir=pc+3): (SP-1) dir H (SP-2) dir L SP SP-2 PC dir_sub Funcionamiento de la instrucción RET: RET Después de ejecutar la instrucción: PC dir, donde dir L (SP) dir H (SP+1) SP SP+2

Llamado a subrutinas: uso de SP Ejemplo: Supongamos inicialmente SP=2000h Dirección: Instrucción: 0102h: CALL 3010h 0105h: ADD B 3010h: * subrutina * RET Antes del CALL: SP=2000h PC=0102h Memoria: SP 2000h: xx 1FFFh: xx 1FFEh: xx 1FFDh: xx Después del CALL: SP=1FFEh PC=3010h Memoria: 2000h: xx 1FFFh: 01 SP 1FFEh: 05 1FFDh: xx Después del RET: SP=2000h PC=0105h Memoria: SP 2000h: xx 1FFFh: 01 1FFEh: 05 1FFDh: xx

Decodificación de direcciones Los dispositivos conectados a un μp (memorias, E/S, etc) tienen en general menos líneas de direcciones que el micro Una memoria de 1K x 8 tiene 10 líneas de direcciones y ocho de datos Cómo hacemos para conectarla, suponiendo que está sola con un μp capaz de direccionar 64K? Una solución es la siguiente: DATOS Qué dirección debe tener el μp para comunicarse con esta memoria? μp R A0A9 A10A15 1Kx8 A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 x x x x x x 0 0 0 0 0 0 0 0 0 0 x x x x x x 0 0 0 0 0 0 0 0 0 1 x x x x x x 1 1 1 1 1 1 1 1 1 0 x x x x x x 1 1 1 1 1 1 1 1 1 1

Si el μp pone la dirección 0000h lee la primera dirección de la memoria, y si pone la dirección 03FFh lee la última Que pasa si el μp pone la dirección F000h? En cuantas direcciones distintas lee el mismo dato? Mapa de memoria: Decodificación de direcciones 0000 03FF 0400 Como podríamos conectar el μp con dos memorias como las usadas en el ejemplo anterior? 07FF 0800 0BFF FC00 FFFF

Decodificación: dos memorias Qué dirección debe tener el μp para comunicarse con estas memorias? Mapa de memoria: A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 chip x x x x x 0 0 0 0 0 0 0 0 0 0 0 x x x x x 0 0 0 0 0 0 0 0 0 0 1 x x x x x 1 0 0 0 0 0 0 0 0 0 0 x x x x x 1 0 0 0 0 0 0 0 0 0 1 x x x x x 0 1 1 1 1 1 1 1 1 1 0 x x x x x 0 1 1 1 1 1 1 1 1 1 1 x x x x x 1 1 1 1 1 1 1 1 1 1 0 x x x x x 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 Chip 2 Chip 1 Chip 2 Chip 1 0000 03FF 0400 07FF F800 FBFF FC00 FFFF

Datos Decodificación: 8 memorias Como podríamos conectar 8 memorias como estas? 1Kx8 µp 0 A0A9 1Kx8 1 1Kx8 6 1Kx8 7 A10A12 A13A15 R 3 DECO 3-8 A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 Chip x x x 0 0 0 0 0 0 0 0 0 0 0 0 0 x x x 0 0 0 1 1 1 1 1 1 1 1 1 1 0 x x x 0 0 1 0 0 0 0 0 0 0 0 0 0 x x x 0 0 1 1 1 1 1 1 1 1 1 1 1 1 x x x 0 1 0 0 0 0 0 0 0 0 0 0 0 x x x 0 1 0 1 1 1 1 1 1 1 1 1 1 2 x x x 0 1 1 0 0 0 0 0 0 0 0 0 0 x x x 0 1 1 1 1 1 1 1 1 1 1 1 1 3 x x x 1 0 0 0 0 0 0 0 0 0 0 0 0 x x x 1 0 0 1 1 1 1 1 1 1 1 1 1 4 x x x 1 0 1 0 0 0 0 0 0 0 0 0 0 x x x 1 0 1 1 1 1 1 1 1 1 1 1 1 5 x x x 1 1 0 0 0 0 0 0 0 0 0 0 0 x x x 1 1 0 1 1 1 1 1 1 1 1 1 1 6 x x x 1 1 1 0 0 0 0 0 0 0 0 0 0 x x x 1 1 1 1 1 1 1 1 1 1 1 1 1 7

Mapa de memoria: Decodificación: 8 memorias Chip 0 Chip 1 Chip 2 Chip 3 Chip 4 Chip 5 Chip 6 Chip 7 0000 03FF 0400 07FF 0800 0BFF 0C00 0FFF 1000 13FF 1400 17FF 1800 1BFF 1C00 1FFF Que chip se activa cuando en el bus de direcciones está 20FFh? y cuando está el valor FF00h? Cómo se puede hacer para que exista una sola dirección? A13 A10 A11 A12 A14 A15 A B C 1 2 3 74138 O0 O1 O2 O3 O4 O5 O6 O7 0 7

Decodificación: bloques de entrada y salida De la misma manera que tenemos direcciones específicas para cada memoria, también se hace lo mismo para los dispositivos de entrada salida: Entrada 2x8 Salida 4x8 A0 D0-D7 8 A0 datos I00 I01 I02 I03 I04 I05 I06 I07 A0 A1 D0-D7 8 A0 A1 datos O0 O1 8 8 8 R I10 I11 I12 I13 I14 I15 I16 I17 W WE O2 O3 8 Hay que lograr un diseño que permita acceder a todas las memorias y a todos los periféricos teniendo en cuenta que no se produzca un conflicto de direcciones Un sistema puede trabajar bien si uno o mas dispositivos están mapeados en memoria mas de una vez (se simplifica el hardware)

Supongamos que queremos diseñar un sistema que consta de un µp de 8 bits de datos y 16 bits de direcciones y se lo quiere conectar con: 1 Memoria ROM de 2Kx8 2 Memorias RAM de 1Kx4 1 Puerto de entrada de 2x8 1 Puerto de Salida de 4x8 Decodificación: ejemplos D7D0 µp A0A10 A11A15 2Kx8 1Kx4 1Kx4 2x8 4x8 A0A10 A0A9 A0A9 A0 A0 A1 ROM D7D0 RAM 1 RAM 2 ENTR W W W SAL D7D4 D3D0 D7D0 D7D0 W R 74138 Vcc A11 A O0 A12 B O1 A13 C O2 O3 O4 1 O5 2 O6 3 O7 No existe una única dirección para cada dispositivo

Decodificación: ejemplos Mapa de memoria: A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 CHIP x x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x x 0 0 0 1 1 1 1 1 1 1 1 1 1 1 x x 0 0 1 x 0 0 0 0 0 0 0 0 0 0 x x 0 0 1 x 1 1 1 1 1 1 1 1 1 1 x x 0 0 1 x 0 0 0 0 0 0 0 0 0 0 x x 0 0 1 x 1 1 1 1 1 1 1 1 1 1 x x 0 1 0 x x x x x x x x x x 0 x x 0 1 0 x x x x x x x x x x 1 x x 0 1 1 x x x x x x x x x 0 0 x x 0 1 1 x x x x x x x x x 1 1 ROM RAM 1 RAM 2 ENT SAL ** No existe una única dirección para cada dispositivo

Decodificación: ejemplos Segundo caso: cada dispositivo tiene una única dirección: D7D0 µp A0A10 A11A15 2Kx8 1Kx4 1Kx4 4x8 2x8 A0A10 A0A9 A0A9 A1 A0 A0 ROM D7D0 D7D4 D3D0 D7D0 D7D0 RAM 1 RAM 2 W W W SAL ENT W R Vcc 74138 A11 A O0 A12 B O1 A13 C O2 O3 O4 1 O5 A14 2 O6 A15 3 O7 A10 A6 A7 A8 A10 A9 A B C 1 2 3 74138 O0 O1 O2 O3 O4 O5 O6 O7 A2 A3 A4 A5 A B C 1 2 3 74138 O0 O1 O2 O3 O4 O5 O6 O7 A1

Decodificación: ejemplos Mapa de memoria (segundo caso): A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 Chip 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 ROM 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 RAM 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 RAM 2 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 ENT 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 SAL ** Cada dispositivo tiene una única dirección a costa de un hardware muy complicado

Decodificación: ejemplos Primer caso: ROM x 2 1 RAM 1 y 2 x 2 10 ENTRADA x 2 9 SALIDA NADA IDEM 0000 07FF 0800 0FFF 1000/1 17FE/F 1800/3 1FFC/F 2000 3FFF 4000 7FFF 8000 Segundo caso: ROM RAM 1 y 2 NADA ENTRADA NADA SALIDA 0000 07FF 0800 0BFF 0C00 1403 1404 1405 1406 1BFF 1C00 1C03 1C04 IDEM BFFF C000 NADA IDEM FFFF FFFF

Decodificación: ejemplos Tercer caso: hardware mucho mas simple: D7D0 µp A0A10 2Kx8 ROM 1Kx4 1Kx4 2x8 4x8 A0A9 A0A9 A0 A0 A1 D7D0 D7D4 D3D0 D7D0 D7D0 RAM 1 RAM 2 ENTR SAL W W W A0A10 A11A15 W R A11 A12 A13 A14

Mapa de memoria: Decodificación: ejemplos A 15 A 14 A 13 A 12 A 11 Chip x 0 0 0 0 ROM x 0 0 1 1 RAM 1 x 0 0 1 1 RAM 2 x 0 1 0 1 ENT x 1 0 0 1 SAL Que chip se habilita con la dirección F000h? y en la dirección F800h? En este caso el programador debe cuidar de no usar las direcciones que puedan ocasionar un conflicto La ventaja: se requiere menos hardware El diseño queda limitado para el uso de muchas direcciones en caso de una ampliación posterior