ejercicios informática

57
INTRODUCCIÓN Word/Palabra es un tamaño de referencia en la arquitectura de un computador. Es común que los registros tengan el mismo tamaño que una palabra, y que los valores cargados en dichos registros tengan ese mismo tamaño o múltiplos del mismo. De la misma manera, la longitud de las instrucciones suele tener un tamaño igual o múltiplo del tamaño de palabra. Ejemplos: 2 Bytes (16 bits), 4 Bytes (32 bits) Algunos registros son utilizados para almacenar operandos, antes de ser utilizados por la ALU o bien para almacenar el resultado que produce la misma tras una operación. Por ello tiene sentido que dichos registros tengan tamaño de palabra y que los datos manipulados tengan un tamaño de palabra o múltiplo del de palabra. De ese modo, si han de procesarse datos de gran longitud de forma secuencial, se hará palabra a palabra.

Upload: partigafolch

Post on 10-Apr-2016

10 views

Category:

Documents


1 download

DESCRIPTION

Ejercicios de informática básica

TRANSCRIPT

Page 1: Ejercicios Informática

INTRODUCCIÓN

Word/Palabra es un tamaño de referencia en la arquitectura de un computador. Es común

que los registros tengan el mismo tamaño que una palabra, y que los valores cargados en

dichos registros tengan ese mismo tamaño o múltiplos del mismo. De la misma manera, la

longitud de las instrucciones suele tener un tamaño igual o múltiplo del tamaño de palabra.

Ejemplos: 2 Bytes (16 bits), 4 Bytes (32 bits)…

Algunos registros son utilizados para almacenar operandos, antes de ser utilizados por la

ALU o bien para almacenar el resultado que produce la misma tras una operación.

Por ello tiene sentido que dichos registros tengan tamaño de palabra y que los datos

manipulados tengan un tamaño de palabra o múltiplo del de palabra. De ese modo, si han de

procesarse datos de gran longitud de forma secuencial, se hará palabra a palabra.

Page 2: Ejercicios Informática

INTRODUCCIÓN

Las instrucciones de un procesador, a nivel binario, suelen tener una configuración como la

de los siguientes ejemplos:

• Código de operación (tamaño de x bits), Operando Destino (y bits), 1º Operando

Fuente (z bits), 2º Operando Fuente (v bits) Ej: Suma: add Opdst, OPfnt1, OPfnt2

• Código de operación (x bits), Operando Destino (y bits) Ej: Salto a la dirección de

una instrucción: jmp OPdst1

Dichos operandos pueden ser constantes numéricas, nombres de registros que contienen

valores*…

¿Qué son dichos *valores? Pueden ser simples valores numéricos, tratarse de direcciones de

memoria…

Existen instrucciones aritmético-lógicas, de salto (saltar a otra instrucción cualquiera del

programa que no tiene por qué ser la siguiente), de transferencia de memoria a registros o de

registros a memoria…

Page 3: Ejercicios Informática

COMPUTER ARCHITECTURE

Es una especificación que define el diseño conceptual y la estructura operacional de una

computadora

Categorías/niveles de estudio:

• ISA (Instruction Set Architecture) es el modelo abstracto que define tanto el

conjunto de instrucciones que el procesador puede ejecutar, el tamaño de palabra,

tipos de registros, modos de direccionamiento de memoria y formatos de datos

utilizados

• Microarchitecture / microarquitectura, referente a la organización de la

computadora, la forma en que los datos se transmiten entre los componentes, cómo

son procesados y almacenados

• System design / diseño de sistema, relacionado con todo el hardware, al margen de

la CPU, y aspectos del mismo necesarios para definir la computadora

Page 4: Ejercicios Informática

VON NEUMANN ARCHITECTURE

Page 5: Ejercicios Informática

VON NEUMANN ARCHITECTURE

Central Processing Unit

Memoria

Mecanismos de entrada/salida

Page 6: Ejercicios Informática

CENTRAL PROCESSING UNIT

Processing Unit

ALU

Registros del procesador… (propósito general…)

Control Unit

Registro de instrucción (IR) (guarda la instrucción actual),

Registro contador de programa (PC) (guarda la «posición» actual del programa, la

dirección de memoria en la que se encuentra la instrucción actual)

Controlador y decodificador

Secuenciador, reloj…

Buses (término genérico para referirse a sistemas de transferencia de datos entre partes del

computador o, en otros contexto, entre computadores distintos)

Page 7: Ejercicios Informática

Introducción de nuevos conceptos

Programa almacenados frente a programas fijos

Originalmente: Diseños estructurales fijos, más adecuado que utilizar el término programa,

tal y como lo entendemos hoy. Modificar la estructura, el cableado o cualquier aspecto del

diseño para modificar las tareas realizadas por la máquina era costoso

Los programas, almacenados en una máquina que no es alterada, consisten en conjuntos de

instrucciones que llevan a cabo tareas complejas y que pueden ser rediseñadas de forma

flexible

Page 8: Ejercicios Informática

Las instrucciones y los datos del programa se almacenan en una memoria

El hecho de tratar las instrucciones como datos permitiría, a la postre, la creación de

programas capaces de generar otros programas, como los compiladores

Page 9: Ejercicios Informática

ALGUNOS CONCEPTOS DE MICROARQUITECURA

Procesado general de un programa, extendiendo lo visto hasta ahora:

• Ir a buscar una nueva instrucción («Fetch», ver 1.2-II)

• Decodificar instrucción

• Buscar operandos

• Ejecutar instrucción

• Escribir resultado (en memoria, en registros…)

Page 10: Ejercicios Informática

ALGUNOS CONCEPTOS DE MICROARQUITECURA

Pipelining / Segmentación:

• Los primeros procesadores no permitían que una instrucción comenzase a ser

procesada mientras la anterior tuviera trabajo pendiente

• La segmentación de una instrucción en las etapas descritas anteriormente permite

que, por ejemplo, mientras una instrucción está siendo decodificada, ya se esté

realizando el «fetch» de la siguiente (Nota: No obstante, han de vigilarse la

coherencia y la dependencia entre las instrucciones ya que el comportamiento

«ideal»/óptimo de la segmentación (una instrucción distinta realizando cada etapa) no

siempre es posible.

Page 11: Ejercicios Informática

PIPELINING (ESQUEMA GENERAL IDEAL)

Page 12: Ejercicios Informática

ANTECEDENTES

Ábaco

Leonardo Da Vinci pone sobre el papel su idea para una sumadora mecánica

Blaise Pascal diseña y construye la primera calculadora mecánica en 1642 basada en un

sistema de engranajes

Gottfried Wilhelm Leibniz perfecciona en 1670 la máquina de Pascal y crea otra capaz de

multiplicar

Joseph Marie Jacquard diseña un telar automático, utilizando placas perforadas que

controlan los diseños tejidos

Charles Babbage crea la máquina diferencial en 1823 y diseña la máquina analítica

Augusta Ada Byron esboza los primeros algoritmos ideados expresamente para ser

ejecutados por una máquina en 1842, a partir del trabajo de Babbage

Herman Hollerith aplica el uso de tarjetas perforadas para compilar la información

estadística del censo de los Estados Unidos en 1890

Alan Turing se convierte, debido a su trabajo, en el padre de las ciencias de la computación

modernas y de la inteligencia artificial

Page 13: Ejercicios Informática

PRIMEROS COMPUTADORES

Los primeros modelos del siglo XX no eran electrónicos

Colossus, el primer computador digital completamente electrónico, mediante el uso de

válvulas de vacío, es operativo al final de 1943. Turing y su equipo lo utilizan para

decodificar transmisiones alemanas

ENIAC (Electronic Numerical Integrator And Computer) se convierte en 1945 en el primer

computador de propósito general, aunque no incorporaba el concepto de programa

almacenado. Su reprogramación para adaptarse a un nuevo “problema” a resolver podía

llevar días o semanas

Posteriormente, en un sucesor del ENIAC, tomando la arquitectura Von Neumann como

referencia, se incorpora, entre otras mejoras, la utilización de programas almacenados

En la década de 1950, la incorporación de los transistores a los computadores permite la

creación de componentes más rápidos, pequeños y de menor consumo

En los años 60 aparece el circuito integrado , capaz de integrar varios transistores en una

placa semiconductora con interconexiones soldadas. Como consecuencia, se reducen los

tamaños, costes de producción y mejora la fiabilidad

En la década siguiente, llegan los circuitos integrados de gran escala y los

microprocesadores

Page 14: Ejercicios Informática

GENERACIONES DE COMPUTADOREGENERACIONES DE COMPUTADORES

Primera generación

• Utilización de válvulas de vacío

• De gran tamaño, lentas y poco eficientes

• Usaban tarjetas perforadas

• No eran comercializados

Segunda generación

• Uso de transistores

• Más rápidos y de menor tamaño que los anteriores

• Se utilizan lenguajes de un nivel más alto para programarlos

Tercera generación

• Utilización de circuitos integrados

• Flexibles y más pequeños

• Adecuados para aplicaciones comerciales

• Conocidos como mini computadores

Cuarta generación

• Uso de circuitos integrados a muy gran escala

• Máquinas interactivas de propósito general

• Permiten el desarrollo rápido de aplicaciones

• Mayor facilidad de uso para el usuario y para ser integrado en redes

Quinta generación

• ¿?

Page 15: Ejercicios Informática

GENERACIONES DE COMPUTADOREINTERACCIÓN CON EL USUARIO

Desde mediados de los 40 hasta finales de los 60 (Batch interface/Interfaz por «lotes»)

• Entrada mediante tarjetas perforadas o cinta de papel

• Salida mediante impresora

• Poca o nula interacción en tiempo real

Desde finales de los sesenta hasta el presente (Command Line Interface)

• La entrada se realiza mediante la introducción de órdenes más manejables

• Requieren una labor de aprendizaje considerable

• La incorporación del monitor como dispositivo de salida facilita la interacción

Text Based User Interface (años 80)

• Estandarización de interfaz con mayor complejidad visual, pero basada en texto

• Atajos de teclado, combinaciones de teclas estandarizadas…

Graphic User Interface

• 1968 : Douglas Englebart (Stanford) realiza una demostración de un sistema que

utiliza los antecesores de los actuales ratón, cursores, hipertexto y ventanas múltiples

• A principios de los 70 Xerox continua y amplia dichas investigaciones

• A finales de los 70, Apple comienza a desarrollar su propio sistema basándose en lo

anterior

• Macintosh populariza el ratón, cosa que los intentos anteriores de Xerox y Apple no

habían conseguido

• Microsoft populariza el uso masivo del interfaz de ventanas

• …

Page 16: Ejercicios Informática

Abstracción: Separación por medio de una operación intelectual de las cualidades de un

objeto para considerarlas aisladamente o para considerar el mismo objeto en su pura esencia

o noción

¿Cómo? Aislando el elemento de su contexto o del resto de elementos que lo acompañan,

ocultando ciertos detalles internos de implementación

• Ejemplo: «Caja negra»

• El programa o usuario exterior que utiliza la caja no necesita conocer los detalles

internos para poder interactuar con ella

Ingrediente #1,Ingrediente #2,…Ingrediente #n

Producto finalPreparaciónde receta X

Page 17: Ejercicios Informática

NIVELES DE ABSTRACCIÓN EN ARQUITECTURA DE COMPUTADORES

Hardware (ver 1.2-I)

Firmware: Tipo de software que es almacenado y ejecutado en un dispositivo conectado al

sistema, para comunicarse con el mismo. Ejemplo: Cualquier periférico provisto de un

hardware interno, con algún medio de almacenamiento, como una ROM, donde residen

datos y código propio

Ensamblador: Lenguaje de bajo nivel en el que hay una correspondencia muy alta entre

sus instrucciones y las del procesador

Sistema operativo (ver 1.2-II)

Procesos, programas que están siendo ejecutados, desde aplicaciones de usuario hasta

servicios del sistema operativo

Page 18: Ejercicios Informática

ABSTRACCIÓN PROPORCIONADA POR EL SISTEMA OPERATIVO

El sistema operativo proporciona a los programas de usuario un modelo más sencillo del

computador y se encarga de la administración de todos los recursos

Además, la interacción con el propio usuario no es directa, sino que se hace uso de

«intermediaros», como el GUI o el Shell

Page 19: Ejercicios Informática

MODOS DE EJECUCIÓN DEL SISTEMA OPERATIVO

Para limitar el acceso de los programas a determinadas acciones, el S.O. distingue dos

modos de ejecución para los mismos:

• Modo Kernel (superusuario / administrador): acceso completo al hardware y

set/juego de instrucciones.

• Modo Usuario: Se limitan algunas operaciones para evitar problemas de seguridad.

¿Kernel? Es la parte nuclear del S.O., capaz de coordinar el acceso/comunicación de los

programas con el hardware, reduciendo o eliminando la complejidad desde el punto de vista

de dichos programas, así como gestionar los recursos disponibles en el sistema.

Las solicitudes que los programas/procesos realizan al kernel para que lleve a cabo ciertas

tareas especiales o restringidas (comunicación con hardware, creación de procesos

nuevos…) se denominan llamadas al sistema (system calls)

Page 20: Ejercicios Informática

LLAMADAS AL SISTEMA

Un proceso de usuario necesita un servicio del S.O. : Se realiza una llamada al sistema y el

S.O. pasa a tener el control, realizando lo siguiente:

• Determina qué quiere el proceso que ha invocado la llamada, examinando los

parámetros

• Ejecuta la llamada al sistema

• Devuelve el control al proceso que ha realizado la llamada al sistema

Funciones de las llamadas al sistema

• Controlar procesos (programas)

• Lanzar o forzar la terminación de programas

• Gestionar ficheros

• Abrir, leer, escribir y cerrar archivos.

• Controlar el sistema de ficheros y directorios

• Crear y eliminar directorios, crear links (accesos directos)…

• ...

Page 21: Ejercicios Informática

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIÓN

Trabajar como máquina extendida (Hardware + S.O.)

Ocultar el hardware y presentar a los programas (y a sus programadores)

abstracciones agradables, elegantes, simples y consistentes con las que puedan

trabajar

Administración de recursos

El trabajo del sistema operativo es proporcionar una asignación ordenada y

controlada de los recursos hardware entre los diversos programas que compiten por

estos recursos

Conclusión: lo que se desea es una abstracción simple de alto nivel que se encargue

de tratar con el disco

Page 22: Ejercicios Informática

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIÓN

Administración de recursos

• Ejemplos de situaciones en las que resulta necesario:

o Varios programas se ejecutan al mismo tiempo (comparten la memoria, el

procesador...)

o Varios programas quieren utilizar la red al mismo tiempo (pestañas del

browser, gestor de correo...)

o Ordenar imprimir un documento desde programas distintos

o Abrir un documento y tratar de borrarlo mientras está abierto

Page 23: Ejercicios Informática

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIÓN

Administración de recursos

¿Multiplexación? Es un término genérico aplicado a circuitos, comunicaciones,

gestión de recursos. La multiplexación consiste en la compartición mediante

selección entre los aspirantes a utilizar un medio o recurso dado. Un multiplexor es

un circuito combinacional (integrado por puertas/componentes lógicos) que

selecciona entre varias posibles entradas una única que será transmitida como salida

• La administración de recursos incluye la multiplexación (como concepto) de recursos

de formas distintas:

o En el tiempo : los distintos programas que desean utilizar el mismo recurso se

turnan para utilizarlo

o En el espacio : En lugar de turnarse cada solicitante de recurso «obtiene» una

parte del mismo

o …

Page 24: Ejercicios Informática

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIÓN

Administración de recursos

• Ejemplos de compartición de recursos en el tiempo

o Varios programas intentan llevar a cabo su ejecución en la CPU. El sistema

operativo asigna en primer lugar la CPU a un programa y, una vez que ha

podido ejecutar instrucciones durante un tiempo suficiente, otro programa

obtiene acceso a la CPU, después otro, y en un momento dado el primer

programa vuelve a obtener acceso al recurso. La tarea de determinar cómo se

comparte el recurso en el tiempo (qué proceso tiene derecho a utilizar el

procesador y durante cuánto tiempo) es responsabilidad del sistema operativo.

o Otro ejemplo de compartición en el tiempo es el uso de una impresora. Cuando

hay varios trabajos en una cola (lista de espera) de impresión de una sola

impresora, se debe tomar una decisión en cuanto a qué trabajo debe imprimirse

a continuación (una cola de impresión).

Page 25: Ejercicios Informática

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIÓN

Administración de recursos

• Ejemplos de compartición de recursos en espacio

o Asignación de memoria a programas. Varios programas se están ejecutando al

“mismo tiempo” (hemos visto que realmente se turnan para trabajar/esperar).

Lo mas eficiente es que compartan la memoria (un solo programa no necesita

toda la memoria) de forma simultánea. El S.O. asigna un espacio de memoria a

cada programa en ejecución.

o Otro ejemplo de compartición en espacio es el uso de una unidad de disco

duro. Un mismo disco duro puede almacenar archivos de diferentes usuarios al

mismo tiempo. Se asignan espacios de disco y se gestiona un registro con las

regiones utilizadas por cada archivo. Dicha tarea es llevada a cabo por el S.O.

o Otra tarea del S.O. es la gestión de la memoria SWAP o memoria de

intercambio. Si se ejecutan tantos programas que la memoria esta llena y no

caben más, el S.O. puede decidir quitar algunos programas de la memoria y

almacenarlos de forma temporal en el disco duro hasta que vuelvan a ser

necesarios en memoria (entonces realiza la tarea inversa). El S.O. es el

encargado de decidir cuándo y cómo realizar esta tarea.

Page 26: Ejercicios Informática

NIVELES DE ABSTRACCIÓN EN EL ÁMBITO DE LA PROGRAMACIÓN

Dado un nivel de abstracción cualquiera en el que se encuentre el usuario/programa, obviar

el contenido «oculto» por dicha abstracción facilita la comprensión y la utilización.

Ejemplos:

• En un GUI, al arrastrar un archivo de una carpeta a otra, no nos planteamos que

realmente se están llevando a cabo comandos de movimiento de archivos desde una

ruta a otra

• Al introducir un comando de borrado desde el shell, obviamos que internamente se ha

de gestionar el espacio del disco duro ocupado por dicho archivo o utilizar las

llamadas al sistema pertinentes

• Una orden en un lenguaje de programación de alto nivel que imprime una cadena de

texto en pantalla está realizando, internamente, muchas operaciones de

movimiento/manipulación de datos desde una región de memoria hasta que

finalmente se muestra en el monitor

• …

Page 27: Ejercicios Informática

Código Máquina

Ensamblador

Ej: Lenguajes

Imperativos

Ej: Lenguajes

Orientados a

Objetos

Nivel de

abstracción

Máquina

Humano

Abstracción de las particularidades de la máquina y de

su lenguaje

Acercamiento a los lenguajes naturales utilizados por el

ser humano.

Proceso complejo que se desarrolla desde hace mas de

50 años

Page 28: Ejercicios Informática

Código Máquina

Ensamblador

Ej: Lenguajes

Imperativos

Ej: Lenguajes

Orientados a

Objetos

Normalmente el programador se encuentra en la

situación de querer codificar un programa en alto nivel

(no siempre)

El computador sólo es capaz de ejecutar instrucciones en

código máquina

¿Solución? Compiladores

Nivel de

abstracción

Máquina

Humano

Page 29: Ejercicios Informática

COMPILADOR

Es un programa capaz de traducir un programa escrito en un lenguaje de programación

determinado a otro lenguaje de programación distinto

Lo habitual es traducir desde lenguajes de alto nivel a lenguajes de bajo nivel

Es un proceso complejo

0000 1001 1111 0101 1000 0000 1001 1100 0110 1010 1111 0101 1000 1100 0110 1010 1111 0101 1000 0000 1001

1100 0110 1010

loop: beq R0, R1, end

add R0, R0, R2

b loop

end: sw R3, 100000

Page 30: Ejercicios Informática

CompiladorCódigo

FuenteEjecutable

Escrito en un

lenguaje de

programación

concreto

Preparado para

funcionar en un

sistema concreto

Hay muchos compiladores

diferentes, en función del

lenguaje fuente y del

sistema de destino

Page 31: Ejercicios Informática

FASES DE COMPILACIÓN

Análisis léxico

Preprocesado

Análisis sintáctico

Análisis semántico

Generación de código

Optimización de código

Page 32: Ejercicios Informática

FASES DE COMPILACIÓN

Análisis léxico

Se analiza el código y se reconocen secuencias de texto como, por ejemplo, nombres

de variables, operadores aritméticos, llaves, corchetes, etc., asociándoles un

significado concreto

Page 33: Ejercicios Informática

FASES DE COMPILACIÓN

Preprocesado

• Como su nombre indica, consiste en procesar preliminarmente el código,

transformándolo mediante acciones como sustituir identificadores/expresiones por

funciones o secciones de código completas, si se considera que el resultado será más

sencillo o eficiente

• Ejemplo: Macros en lenguaje C:

o Definida la siguiente macro: #define MAXVALUE 100

o En otra sección del código: int randomValue = 20 + MAXVALUE;

o Tras preprocesado: int randomValue = 20 + 100;

Page 34: Ejercicios Informática

FASES DE COMPILACIÓN

Análisis sintáctico

El código es analizado desde un punto de vista «gramatical», ya que el lenguaje tiene

unas reglas concretas sintácticas

Ejemplo: Sección de código extraída de un programa en C.

if ( myValue > 0 ) {

printf( "Es positivo." );

}

else {

printf( "Es negativo." );

}

Es sintácticamente correcto en C. Sin embargo, si, por ejemplo, fueran eliminadaslas comillas de alguna de las llamadas a printf, se detectaría un error sintáctico

al no encontrarse un final de cadena de texto.

Page 35: Ejercicios Informática

FASES DE COMPILACIÓN

Análisis semántico

En esta fase se analiza el significado, la información semántica del código, en cuanto

a aspectos tales como la correcta utilización de los diferentes tipos de datos

Ejemplo de error semántico en C++: Asignar un valor booleano a una variable entera

int myVariable = false;

Page 36: Ejercicios Informática

FASES DE COMPILACIÓN

Generación de código

Tras las etapas anteriores se dispone de código intermedio generado por el

compilador, pero es necesario generar código ensamblador, enlazarlo con librerías y

elementos necesarios relacionados, hasta generar código máquina ejecutable por el

procesador

Page 37: Ejercicios Informática

FASES DE COMPILACIÓN

Optimización

La optimización es susceptible de ser realizada en diferentes fases de todo el proceso

descrito

Ejemplos:

Reordenación de instrucciones en el código fuente para ganar eficiencia

Calcular valores constantes. Ejemplo:int randomValue = 20 + 10;

Transformar en int randomValue = 30;

Inspección de código máquina y eliminar redundancias

Page 38: Ejercicios Informática

INSTRUCTION SET ARCHITECTURE

ISA (Instruction Set Architecture) es el modelo abstracto que define tanto el conjunto de

instrucciones que el procesador puede ejecutar, el tamaño de palabra, tipos de registros,

modos de direccionamiento de memoria y formatos de datos utilizados

Page 39: Ejercicios Informática

INSTRUCTION SET

Conjunto de Instrucciones que el procesador es capaz de ejecutar

Cada instrucción (o grupo de instrucciones) tiene su propia sintaxis y reglas

Para cada instrucción se ha de especificar qué operación lleva a cabo, el tipo de parámetros

necesarios, cómo son utilizados y cuáles son los efectos colaterales de dicha instrucción,

como la modificación de registros específicos…

Page 40: Ejercicios Informática

CLASIFICACIÓN DE DISEÑO DE CPU SEGÚN SU JUEGO DE INSTRUCCIONES

Tradicionalmente:

CISC (Complex instruction set computing)

Ejecuciones complejas y versátiles (Ej: Leer de memoria, realizar una

operación y escribir en memoria en una sola instrucción)

RISC (Reduced instruction set computing)

Conjunto reducido de instrucciones más simples y optimizadas

Con la evolución en el tiempo de las diferentes arquitecturas, la distinción basada en esos

términos no es tan útil para llevar a cabo una clasificación, y términos como la distinción

entre aproximaciones load/store* vs non load/store cobran más sentido

*Arquitecturas en las que sólo está permitida la recuperación de datos desde memoria y

escritura de la misma mediante operaciones específicas LOAD y STORE, en lugar de lo que

ocurre con otras, como la 8086 en las que una operación como ADD (suma) ofrece la

posibilidad de escribir su resultado en memoria directamente

Page 41: Ejercicios Informática

REGISTROS

Elementos de almacenamiento del procesador, de acceso más rápido que la memoria

Guardan los datos para poder operar con ellos

Algunos son de propósito general, de modo que el programador puede usarlos con cierta

libertad a la hora de especificar instrucciones

Otros son de propósito especifico (direcciones de memoria, ciertas instrucciones especiales,

flags...)

Page 42: Ejercicios Informática

FLAGS

Una serie de flags (marcadores, “banderas”) ayudan a comprender qué ha ocurrido como

consecuencia de ejecutar una instrucción.

Por ejemplo, indican si el resultado ha sido cero o el resultado de una comparación ( Ej: En

el 8086, el llamado Zero flag toma valor «1»)

Page 43: Ejercicios Informática

EJEMPLO: 8086

Origen de la gama de procesadores más exitosa de Intel

Algunos datos

Registros de propósito general: AX, BX, CX, DX

Registros especiales, como uno de estado, dedicado a almacenar flags, como Zero

flag, Carry flag, Overflow flag…

Page 44: Ejercicios Informática

MODOS DE DIRECCIONAMIENTO

Los modos de direccionamiento son las formas en que los operandos de cada instrucción del

juego / set pueden ser identificados

Un modo de direccionamiento especifica cómo calcular la dirección efectiva de un

operando en base a registros, constantes…

Page 45: Ejercicios Informática

MODOS DE DIRECCIONAMIENTO

Algunos modos de direccionamiento del procesador 8086

Inmediato

Ej: MOV AX, 16: La constante con valor 16 se almacenará en el registro AX

Registro

Ej: MOV AX, BX. El contenido de BX se copia en AX

Directo

Ej: MOV AX, [300h]. El uso de [ ] indica que aquello que se va a copiar no es 300h

(h – hexa), sino que lo que se copiará es un dato que está almacenado a partir de la

dirección 300h. Así pues, la dirección de inicio del dato es conocida ¿Y el tamaño de

lo que hay que copiar? Viene dado por la capacidad del registro destino. En este

ejemplo, AX es de 2 Bytes

Indirecto

Ej: MOV AX, [BX]. Se copia en AX un dato cuya dirección de inicio está en BX

Base + Desplazamiento

Ej: MOV AX, [BX + 8]. BX sumado al valor marcan la dirección de inicio del dato a

copiar a AX.

Más modos: Implícito, base + índice + desplazamiento…

Page 46: Ejercicios Informática

MOVIMIENTO

MOV : Permite copiar datos

Desde memoria a un registro

Desde registro a memoria

Entre registros

Copiar valores constantes a registros o a memoria

Es una operación muy versátil

Es una operación capaz de modificar directamente la memoria

MOV opDst, opSrc

Page 47: Ejercicios Informática

ADICIÓN

ADD opDst, opSrc

Suma los dos operandos *

El resultado se almacena en el operando destino

* No interpretar de forma literal necesariamente, ya que se deben tener en cuenta los modos

de direccionamiento

Page 48: Ejercicios Informática

SUSTRACCIÓN

SUB opDst, opSrc

Resta el operando fuente del destino ( destino = destino – fuente ) *

El resultado se almacena en el operando destino

* No interpretar de forma literal necesariamente, ya que se deben tener en cuenta los modos

de direccionamiento

Page 49: Ejercicios Informática

COMPARACIÓN

CMP opDst, opSrc

Resta el operando fuente del destino pero el resultado no es devuelto

Los operandos permanecen inalterados pero los flags se actualizan, pudiéndose consultar a

continuación mediante instrucciones de bifurcación condicional

Si los valores comparados son iguales el flag zero toma el valor 1. De lo contrario, el valor

es 0

* No interpretar de forma literal necesariamente, ya que se deben tener en cuenta los modos

de direccionamiento

Page 50: Ejercicios Informática

AND / «Y» LÓGICO

AND opDst, opSrc

Se almacena en el destino el resultado de hacer operación «y» con cada bit de los operandos

Page 51: Ejercicios Informática

OR / «O» LÓGICO

OR opDst, opSrc

Se almacena en el destino el resultado de hacer operación «o» con cada bit de los operandos

Page 52: Ejercicios Informática

XOR / «O EXCLUSIVO» LÓGICO

XOR opDst, opSrc

Se almacena en el destino el resultado de hacer operación «o lógico» con cada bit de los

operandos

La operación XOR es sólo «1» cuando los valores comparados son distintos

Page 53: Ejercicios Informática

NOT / «NO» LÓGICO

NOT opDst

Se almacena en el destino el resultado de invertir cada bit de dicho operando, es decir, el

complemento a uno

Page 54: Ejercicios Informática

SALTO INCONDICIONAL

JMP opDst

Transfiere el control incondicionalmente al operando, que puede ser una dirección o una

etiqueta

Page 55: Ejercicios Informática

SALTO CONDICIONAL

JZ opDst

Se transfiere el control al operando si el flag zero es 1

JNZ opDst

Se transfiere el control al operando si el flag zero es 0

Page 56: Ejercicios Informática

INCREMENTO Y DECREMENTO

INC opDst

Suma una unidad al operando destino

DEC opDst

Resta una unidad del operando destino

Flags como el Flag zero se ven afectados por el resultado

Page 57: Ejercicios Informática

EJEMPLO DE SIMULADOR ONLINE

http://schweigi.github.io/assembler-simulator/

Se trata de un simulador restringido y reducido tomando como base las arquitecturas x86

CPU de 8 bits y 256 Bytes de memoria

El espacio de memoria desde 0xE8 hasta 0xFF está destinado a mapear un dispositivo

simulado de salida similar a una consola

Documentación

http://schweigi.github.io/assembler-simulator/instruction-set.html