Estructura del computador Componentes: Sistema Procesador: Realiza la ejecución de los programas. Periféricos: Medios de almacenamiento de largo plazo y dispositivos Entrada/Salida de información (E/S).
Estructura del computador (cont.)?
Estrutura del Sistema Procesador Componentes: Memoria: para almacenar programas y datos. CPU (Unidad Central de Procesos): para realizar las instrucciones del programa. Controladores de E/S: para controlar a los dispositivos periféricos. Buses: para transportar datos y programas entre Memoria, CPU y Controladores
Estructura del Sistema Procesador (cont.)? (Gp:) Bus Datos (Gp:) Bus de Direcciones CPU (Gp:) Bus de Control Memoria Contr. E/S (Gp:) Periféricos (Gp:) Sistema Procesador
MEMORIA Memoria (RAM), características (Gp:) 0 (Gp:) n-1 Cada celda de memoria tiene asociado un número o dirección que la identifica. Las celdas siempre tienen valores (nunca están vacías) Las celdas de memoria RAM (acceso randómico) se pueden “leer y escribir”. La memoria está dividida en celdas de igual tamaño.
Memoria (RAM), características Cada celda de memoria está compuesta por subceldas biestables. Siempre tienen uno de dos estados A los dos estados se les atribuye un valor numérico: cero o uno Las combinaciones de ceros y unos pueden representar todo tipo de datos: numéricos, texto, sonidos, imágenes, video, instrucciones o cualquier cosa que se quiera que el computador procese Si se apaga el computador los datos almacenados en la memoria (RAM) se pierden
Memoria (RAM), características si se quiere almacenar (asignar) un dato en una celda de memoria, el dato almacenado es reemplazado por el nuevo dato y el viejo se pierde. Sólo almacena un dato a la vez Si se copia un dato desde una celda a otra, el dato original es clonado (permanece) Cuando se hacen programas, las direcciones de las celdas son representadas por palabras que resultan más naturales a los humanos. Por ejemplo se puede tratar una celda de memoria como si fuese una variable.
Memoria (RAM), características Los lenguajes tiene diferentes formas de representar una asignación de un dato a una celda de memoria. Algunos ejemplos: A B ’seudo lenguaje’ significa que lo que estaba almacenado en la celda con dirección B se copia en la celda A, lo que había en A se pierde y lo que había en B permanece A := B lenguaje Pascal A = B lenguaje C MOV (AX), (B) lenguaje assembler (se requiere dos pasos) MOV (A), (AX)
MEMORIA Memoria (RAM), uso (Gp:) 0 (Gp:) n-1 Libre Programa y datos del Sistema Operativo Programa de usuario Datos del programa de usuario (Gp:) Instrucción 1 Instrucción 2 Instrucción 3 ……………….. Instrucción n (Gp:) En lenguaje de máquina
1 Unidad Central de Procesos: CPU (1)? AX BX Registros de datos Almacenan los datos que son utilizados por las instrucciones de máquina. Aparecen como operando en las instrucciones. Mov AX, 33 mueve un 33 al registro AX Mov BX, 10 mueve un 10 al registro BX Add AX, BX suma el contenido de AX con el de BX y deja el resultado en AX
1 Unidad Central de Procesos: CPU (2)? AX BX Registro de Instrucción Almacena la instrucción que se está ejecutando. Es invisible para el programa de máquina.(no aparece en la instrucción en forma explícita).
1 Unidad Central de Procesos: CPU (3)? AX BX IP Registro de Instrucción Dirección de la próxima instrucción Apunta a la próxima instrucción. No aparece como operando. Puede ser modificado por instrucciones de transferencia de control. Ej.: Jmp 2000 cambia el contenido de IP por 2000.
1 Unidad Central de Procesos: CPU (4)? AX BX IP Registro de estado Registro de Instrucción Banderas de resultado de la última instrucción ejecutada. Cada bandera puede estar arriba o abajo (1 ó 0). Ejemplo: si el resultado fue negativo, cero, si se dividió por cero, etc.
1 Unidad Central de Procesos: CPU (5)? AX BX IP Registro de estado SP Registro de Instrucción Dirección del tope de pila La pila es una estructura que permite almacenar y retirar datos sólo del tope. Se usa para trabajar con “subprogramas”. La pilas pueden estar en cualquier parte de la memoria.
1 Ciclo de ejecución: CPU (6)? Las Instrucciones del programa “viajan” por el bus de datos y llegan al “Registro de Instrucción” de la CPU donde son “ejecutadas”. Las instrucciones son llevadas secuencialmente a la CPU. El procesador realiza el “Ciclo de Ejecución de instrucciones”: Traer instrucción apuntada por IP Incrementar IP Ejecutar instrucción
1 Instrucciones de máquina De movimiento, copia el contenido de una celda de memoria o registro en otra celda o registro. Ej: Mov AX, (2000) Aritméticas y lógicas, suman, restan dividen, etc. Ej.: Add AX, BX De trasferencia de control, cambian el contenido de IP cambiando el lugar de la RAM desde el cual secuencialmente las instrucciones. Ej.: Jmp 300
Modos de direccionamiento (1)? Registro: el operando es un registro que contiene el dato. Inmediato: el operando es el dato. Mov AX, 33 33 AX
Modos de direccionamiento (2)? Registro: el operando es un registro que contiene el dato. Directo: el operando es la dirección el dato. Mov AX, (2000)? 33 200 2000 33 AX
1 Modos de direccionamiento (3)? Registro: el operando es un registro que contiene el dato. Diferido o indirecto: el operando es la dirección de la dirección del dato. A la celda cuya dirección aparece en el operando se le denomina puntero. Mov AX, ((2000))? 3000 200 2000 33 200 3000 33 AX (Gp:) OJO: a esta celda se le llama puntero, en C !!?
Modos de direccionamiento (4)? Mov AX, ((2000))? 3000 200 2000 33 200 3000 33 AX Inc (2000)? uno: Jmp: Instrucción de transferencia de control uno: rótulo que representa la dirección en la que está almacenada la instrucción Jmp uno Inc: Instrucción que incrementa en uno ¿qué modo de direccionamientos hay en este programa? ¿qué ocurre al repetirse la instrucción almacenada en uno ysiguientes? ¿cuantas veces se ejecutan?
Modos de direccionamiento (5)? 3001 200 2000 33 200 3000 200 AX Mov AX, ((2000))? Inc (2000)? uno: Jmp uno Tarea: Modificar el programa para que el valor contenido por el registro AX se copie en las direcciones 3000 en adelante.
Modos de direccionamiento (6)? 3000 2000 33 200 3000 Tarea: Modificar el programa para que el valor contenido por el registro de la dirección 3000 en adelante se copie en las direcciones 4000 en adelante. 4000 2001 4000
Relación: variables – celdas de memoria 3000 2000 33 200 3000 4000 2001 4000 A todas las celdas que se les puede cambiar el contenido se les llama variables. A las variables que contienen direcciones se les llama punteros. En los lenguajes de alto nivel: ¿qué variables son punteros en el ejemplo?
33 2000 ¿Cómo asignarle un contenido? Variables <-> celdas de memoria (1)? Mov AX, 33 Mov (2000), AX x = 33 Lenguaje de máquina: Lenguaje alto nivel: x Pseudo lenguaje: 33 RAM 2000 equivale a x
35 2000 ¿Cómo asignarle un contenido que es el resultado de expresión? Variables <-> celdas de memoria (2)? Mov AX, 33 Add AX, 2 x = 33 + 2 Lenguaje de máquina: Lenguaje alto nivel: x Pseudo lenguaje: 33 + 2 RAM Mov (2000), AX 2000 equivale a x
Ejercicio: Variables <-> celdas de memoria (3)? ? x = x + 3 Lenguaje de máquina: Lenguaje alto nivel: x Pseudo lenguaje: x + 3 2000 equivale a x
Variables puntero y modo diferido x = &y *x = *x + 1 Lenguaje C: 2000 equivale a x Mov AX, 1000 Mov (2000), AX Inc ((2000))? 1000 equivale a y