You are on page 1of 57

INTRODUCCIN

Word/Palabra es un tamao de referencia en la arquitectura de un computador. Es comn


que los registros tengan el mismo tamao que una palabra, y que los valores cargados en
dichos registros tengan ese mismo tamao o mltiplos del mismo. De la misma manera, la
longitud de las instrucciones suele tener un tamao igual o mltiplo del tamao 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 operacin.

Por ello tiene sentido que dichos registros tengan tamao de palabra y que los datos
manipulados tengan un tamao de palabra o mltiplo del de palabra. De ese modo, si han de
procesarse datos de gran longitud de forma secuencial, se har palabra a palabra.

INTRODUCCIN

Las instrucciones de un procesador, a nivel binario, suelen tener una configuracin como la
de los siguientes ejemplos:

Cdigo de operacin (tamao de x bits), Operando Destino (y bits), 1 Operando


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

Cdigo de operacin (x bits), Operando Destino (y bits) Ej: Salto a la direccin de


una instruccin: jmp OPdst1

Dichos operandos pueden ser constantes numricas, nombres de registros que contienen
valores*

Qu son dichos *valores? Pueden ser simples valores numricos, tratarse de direcciones de
memoria

Existen instrucciones aritmtico-lgicas, de salto (saltar a otra instruccin cualquiera del


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

COMPUTER ARCHITECTURE

Es una especificacin que define el diseo conceptual y la estructura operacional de una


computadora

Categoras/niveles de estudio:

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


conjunto de instrucciones que el procesador puede ejecutar, el tamao de palabra,
tipos de registros, modos de direccionamiento de memoria y formatos de datos
utilizados

Microarchitecture / microarquitectura, referente a la organizacin de la


computadora, la forma en que los datos se transmiten entre los componentes, cmo
son procesados y almacenados

System design / diseo de sistema, relacionado con todo el hardware, al margen de


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

VON NEUMANN ARCHITECTURE

VON NEUMANN ARCHITECTURE

Central Processing Unit

Memoria

Mecanismos de entrada/salida

CENTRAL PROCESSING UNIT

Processing Unit

Control Unit

ALU
Registros del procesador (propsito general)

Registro de instruccin (IR) (guarda la instruccin actual),


Registro contador de programa (PC) (guarda la posicin actual del programa, la
direccin de memoria en la que se encuentra la instruccin actual)
Controlador y decodificador
Secuenciador, reloj

Buses (trmino genrico para referirse a sistemas de transferencia de datos entre partes del
computador o, en otros contexto, entre computadores distintos)

Introduccin de nuevos conceptos

Programa almacenados frente a programas fijos

Originalmente: Diseos estructurales fijos, ms adecuado que utilizar el trmino programa,


tal y como lo entendemos hoy. Modificar la estructura, el cableado o cualquier aspecto del
diseo para modificar las tareas realizadas por la mquina era costoso

Los programas, almacenados en una mquina que no es alterada, consisten en conjuntos de


instrucciones que llevan a cabo tareas complejas y que pueden ser rediseadas de forma
flexible

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

El hecho de tratar las instrucciones como datos permitira, a la postre, la creacin de


programas capaces de generar otros programas, como los compiladores

ALGUNOS CONCEPTOS DE MICROARQUITECURA

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

Ir a buscar una nueva instruccin (Fetch, ver 1.2-II)


Decodificar instruccin
Buscar operandos
Ejecutar instruccin
Escribir resultado (en memoria, en registros)

ALGUNOS CONCEPTOS DE MICROARQUITECURA

Pipelining / Segmentacin:

Los primeros procesadores no permitan que una instruccin comenzase a ser


procesada mientras la anterior tuviera trabajo pendiente

La segmentacin de una instruccin en las etapas descritas anteriormente permite


que, por ejemplo, mientras una instruccin 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 segmentacin (una instruccin distinta realizando cada etapa) no
siempre es posible.

PIPELINING (ESQUEMA GENERAL IDEAL)

ANTECEDENTES

baco

Leonardo Da Vinci pone sobre el papel su idea para una sumadora mecnica

Blaise Pascal disea y construye la primera calculadora mecnica en 1642 basada en un


sistema de engranajes

Gottfried Wilhelm Leibniz perfecciona en 1670 la mquina de Pascal y crea otra capaz de
multiplicar

Joseph Marie Jacquard disea un telar automtico, utilizando placas perforadas que
controlan los diseos tejidos

Charles Babbage crea la mquina diferencial en 1823 y disea la mquina analtica

Augusta Ada Byron esboza los primeros algoritmos ideados expresamente para ser
ejecutados por una mquina en 1842, a partir del trabajo de Babbage

Herman Hollerith aplica el uso de tarjetas perforadas para compilar la informacin


estadstica del censo de los Estados Unidos en 1890

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


modernas y de la inteligencia artificial

PRIMEROS COMPUTADORES

Los primeros modelos del siglo XX no eran electrnicos

Colossus, el primer computador digital completamente electrnico, mediante el uso de


vlvulas de vaco, 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 propsito general, aunque no incorporaba el concepto de programa
almacenado. Su reprogramacin para adaptarse a un nuevo problema a resolver poda
llevar das o semanas

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


referencia, se incorpora, entre otras mejoras, la utilizacin de programas almacenados

En la dcada de 1950, la incorporacin de los transistores a los computadores permite la


creacin de componentes ms rpidos, pequeos y de menor consumo

En los aos 60 aparece el circuito integrado , capaz de integrar varios transistores en una
placa semiconductora con interconexiones soldadas. Como consecuencia, se reducen los
tamaos, costes de produccin y mejora la fiabilidad

En la dcada siguiente, llegan los circuitos integrados de gran escala y los


microprocesadores

GENERACIONES DE COMPUTADORES
COMPUTADORE

Primera generacin
Utilizacin de vlvulas de vaco
De gran tamao, lentas y poco eficientes
Usaban tarjetas perforadas
No eran comercializados
Segunda generacin
Uso de transistores
Ms rpidos y de menor tamao que los anteriores
Se utilizan lenguajes de un nivel ms alto para programarlos
Tercera generacin
Utilizacin de circuitos integrados
Flexibles y ms pequeos
Adecuados para aplicaciones comerciales
Conocidos como mini computadores
Cuarta generacin
Uso de circuitos integrados a muy gran escala
Mquinas interactivas de propsito general
Permiten el desarrollo rpido de aplicaciones
Mayor facilidad de uso para el usuario y para ser integrado en redes
Quinta generacin
?

GENERACIONES
INTERACCIN
CON
DEEL
COMPUTADORE
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 interaccin en tiempo real

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


La entrada se realiza mediante la introduccin de rdenes ms manejables
Requieren una labor de aprendizaje considerable
La incorporacin del monitor como dispositivo de salida facilita la interaccin

Text Based User Interface (aos 80)


Estandarizacin 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 demostracin de un sistema que
utiliza los antecesores de los actuales ratn, cursores, hipertexto y ventanas mltiples
A principios de los 70 Xerox continua y amplia dichas investigaciones
A finales de los 70, Apple comienza a desarrollar su propio sistema basndose en lo
anterior
Macintosh populariza el ratn, cosa que los intentos anteriores de Xerox y Apple no
haban conseguido
Microsoft populariza el uso masivo del interfaz de ventanas

Abstraccin: Separacin por medio de una operacin intelectual de las cualidades de un


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

Cmo? Aislando el elemento de su contexto o del resto de elementos que lo acompaan,


ocultando ciertos detalles internos de implementacin

Ejemplo: Caja negra

Ingrediente #1,
Ingrediente #2,

Ingrediente #n

Preparacin
de receta X

Producto final

El programa o usuario exterior que utiliza la caja no necesita conocer los detalles
internos para poder interactuar con ella

NIVELES DE ABSTRACCIN 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 perifrico provisto de un
hardware interno, con algn medio de almacenamiento, como una ROM, donde residen
datos y cdigo 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 estn siendo ejecutados, desde aplicaciones de usuario hasta
servicios del sistema operativo

ABSTRACCIN PROPORCIONADA POR EL SISTEMA OPERATIVO

El sistema operativo proporciona a los programas de usuario un modelo ms sencillo del


computador y se encarga de la administracin de todos los recursos

Adems, la interaccin con el propio usuario no es directa, sino que se hace uso de
intermediaros, como el GUI o el Shell

MODOS DE EJECUCIN DEL SISTEMA OPERATIVO

Para limitar el acceso de los programas a determinadas acciones, el S.O. distingue dos
modos de ejecucin 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/comunicacin 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 (comunicacin con hardware, creacin de procesos
nuevos) se denominan llamadas al sistema (system calls)

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
parmetros
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 terminacin 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)
...

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIN

Trabajar como mquina 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

Administracin de recursos

El trabajo del sistema operativo es proporcionar una asignacin ordenada y


controlada de los recursos hardware entre los diversos programas que compiten por
estos recursos
Conclusin: lo que se desea es una abstraccin simple de alto nivel que se encargue
de tratar con el disco

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIN

Administracin de recursos

Ejemplos de situaciones en las que resulta necesario:


o

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


procesador...)

Varios programas quieren utilizar la red al mismo tiempo (pestaas del


browser, gestor de correo...)

Ordenar imprimir un documento desde programas distintos

Abrir un documento y tratar de borrarlo mientras est abierto

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIN

Administracin de recursos

Multiplexacin? Es un trmino genrico aplicado a circuitos, comunicaciones,


gestin de recursos. La multiplexacin consiste en la comparticin mediante
seleccin entre los aspirantes a utilizar un medio o recurso dado. Un multiplexor es
un circuito combinacional (integrado por puertas/componentes lgicos) que
selecciona entre varias posibles entradas una nica que ser transmitida como salida

La administracin de recursos incluye la multiplexacin (como concepto) de recursos


de formas distintas:

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


turnan para utilizarlo

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


parte del mismo

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIN

Administracin de recursos

Ejemplos de comparticin de recursos en el tiempo

Varios programas intentan llevar a cabo su ejecucin 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, despus otro, y en un momento dado el primer
programa vuelve a obtener acceso al recurso. La tarea de determinar cmo se
comparte el recurso en el tiempo (qu proceso tiene derecho a utilizar el
procesador y durante cunto tiempo) es responsabilidad del sistema operativo.

Otro ejemplo de comparticin en el tiempo es el uso de una impresora. Cuando


hay varios trabajos en una cola (lista de espera) de impresin de una sola
impresora, se debe tomar una decisin en cuanto a qu trabajo debe imprimirse
a continuacin (una cola de impresin).

FUNCIONES DEL SISTEMA OPERATIVO EN CUANTO A ABSTRACCIN

Administracin de recursos

Ejemplos de comparticin de recursos en espacio


o

Asignacin de memoria a programas. Varios programas se estn 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 simultnea. El S.O. asigna un espacio de memoria a
cada programa en ejecucin.

Otro ejemplo de comparticin 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.

Otra tarea del S.O. es la gestin de la memoria SWAP o memoria de


intercambio. Si se ejecutan tantos programas que la memoria esta llena y no
caben ms, 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 cundo y cmo realizar esta tarea.

NIVELES DE ABSTRACCIN EN EL MBITO DE LA PROGRAMACIN

Dado un nivel de abstraccin cualquiera en el que se encuentre el usuario/programa, obviar


el contenido oculto por dicha abstraccin facilita la comprensin y la utilizacin.
Ejemplos:

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


realmente se estn 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 programacin de alto nivel que imprime una cadena de
texto en pantalla est realizando, internamente, muchas operaciones de
movimiento/manipulacin de datos desde una regin de memoria hasta que
finalmente se muestra en el monitor

Humano

Ej: Lenguajes
Orientados a
Objetos
Ej: Lenguajes
Imperativos

Ensamblador

Mquina
Nivel de
abstraccin

Cdigo Mquina

Abstraccin de las particularidades de la mquina y de


su lenguaje

Acercamiento a los lenguajes naturales utilizados por el


ser humano.

Proceso complejo que se desarrolla desde hace mas de


50 aos

Humano

Ej: Lenguajes
Orientados a
Objetos

Normalmente el programador se encuentra en la


situacin de querer codificar un programa en alto nivel
(no siempre)

El computador slo es capaz de ejecutar instrucciones en


cdigo mquina

Solucin? Compiladores

Ej: Lenguajes
Imperativos

Ensamblador

Mquina
Nivel de
abstraccin

Cdigo Mquina

COMPILADOR

Es un programa capaz de traducir un programa escrito en un lenguaje de programacin


determinado a otro lenguaje de programacin distinto

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

loop: beq R0, R1, end


add R0, R0, R2
b loop
end: sw R3, 100000

0000 1001 1111 0101 1000 0000 1001


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

Es un proceso complejo

Cdigo
Fuente

Escrito en un
lenguaje de
programacin
concreto

Compilador

Hay muchos compiladores


diferentes, en funcin del
lenguaje fuente y del
sistema de destino

Ejecutable

Preparado para
funcionar en un
sistema concreto

FASES DE COMPILACIN

Anlisis lxico

Preprocesado

Anlisis sintctico

Anlisis semntico

Generacin de cdigo

Optimizacin de cdigo

FASES DE COMPILACIN

Anlisis lxico
Se analiza el cdigo y se reconocen secuencias de texto como, por ejemplo, nombres
de variables, operadores aritmticos, llaves, corchetes, etc., asocindoles un
significado concreto

FASES DE COMPILACIN

Preprocesado

Como su nombre indica, consiste en procesar preliminarmente el cdigo,


transformndolo mediante acciones como sustituir identificadores/expresiones por
funciones o secciones de cdigo completas, si se considera que el resultado ser ms
sencillo o eficiente

Ejemplo: Macros en lenguaje C:


o

Definida la siguiente macro: #define MAXVALUE 100

En otra seccin del cdigo: int randomValue = 20 + MAXVALUE;

Tras preprocesado: int randomValue = 20 + 100;

FASES DE COMPILACIN

Anlisis sintctico

El cdigo es analizado desde un punto de vista gramatical, ya que el lenguaje tiene


unas reglas concretas sintcticas

Ejemplo: Seccin de cdigo extrada de un programa en C.


if ( myValue > 0 ) {
printf( "Es positivo." );
}
else {
printf( "Es negativo." );
}
Es sintcticamente correcto en C. Sin embargo, si, por ejemplo, fueran eliminadas
las comillas de alguna de las llamadas a printf, se detectara un error sintctico
al no encontrarse un final de cadena de texto.

FASES DE COMPILACIN

Anlisis semntico

En esta fase se analiza el significado, la informacin semntica del cdigo, en cuanto


a aspectos tales como la correcta utilizacin de los diferentes tipos de datos

Ejemplo de error semntico en C++: Asignar un valor booleano a una variable entera
int myVariable = false;

FASES DE COMPILACIN

Generacin de cdigo

Tras las etapas anteriores se dispone de cdigo intermedio generado por el


compilador, pero es necesario generar cdigo ensamblador, enlazarlo con libreras y
elementos necesarios relacionados, hasta generar cdigo mquina ejecutable por el
procesador

FASES DE COMPILACIN

Optimizacin

La optimizacin es susceptible de ser realizada en diferentes fases de todo el proceso


descrito

Ejemplos:

Reordenacin de instrucciones en el cdigo fuente para ganar eficiencia

Calcular valores constantes. Ejemplo:


int randomValue = 20 + 10;
Transformar en int randomValue = 30;

Inspeccin de cdigo mquina y eliminar redundancias

INSTRUCTION SET ARCHITECTURE

ISA (Instruction Set Architecture) es el modelo abstracto que define tanto el conjunto de
instrucciones que el procesador puede ejecutar, el tamao de palabra, tipos de registros,
modos de direccionamiento de memoria y formatos de datos utilizados

INSTRUCTION SET

Conjunto de Instrucciones que el procesador es capaz de ejecutar

Cada instruccin (o grupo de instrucciones) tiene su propia sintaxis y reglas

Para cada instruccin se ha de especificar qu operacin lleva a cabo, el tipo de parmetros


necesarios, cmo son utilizados y cules son los efectos colaterales de dicha instruccin,
como la modificacin de registros especficos

CLASIFICACIN DE DISEO DE CPU SEGN SU JUEGO DE INSTRUCCIONES

Tradicionalmente:

CISC (Complex instruction set computing)


Ejecuciones complejas y verstiles (Ej: Leer de memoria, realizar una
operacin y escribir en memoria en una sola instruccin)

RISC (Reduced instruction set computing)


Conjunto reducido de instrucciones ms simples y optimizadas

Con la evolucin en el tiempo de las diferentes arquitecturas, la distincin basada en esos


trminos no es tan til para llevar a cabo una clasificacin, y trminos como la distincin
entre aproximaciones load/store* vs non load/store cobran ms sentido

*Arquitecturas en las que slo est permitida la recuperacin de datos desde memoria y
escritura de la misma mediante operaciones especficas LOAD y STORE, en lugar de lo que
ocurre con otras, como la 8086 en las que una operacin como ADD (suma) ofrece la
posibilidad de escribir su resultado en memoria directamente

REGISTROS

Elementos de almacenamiento del procesador, de acceso ms rpido que la memoria

Guardan los datos para poder operar con ellos

Algunos son de propsito general, de modo que el programador puede usarlos con cierta
libertad a la hora de especificar instrucciones

Otros son de propsito especifico (direcciones de memoria, ciertas instrucciones especiales,


flags...)

FLAGS

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


consecuencia de ejecutar una instruccin.

Por ejemplo, indican si el resultado ha sido cero o el resultado de una comparacin ( Ej: En
el 8086, el llamado Zero flag toma valor 1)

EJEMPLO: 8086

Origen de la gama de procesadores ms exitosa de Intel

Algunos datos

Registros de propsito general: AX, BX, CX, DX

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

MODOS DE DIRECCIONAMIENTO

Los modos de direccionamiento son las formas en que los operandos de cada instruccin del
juego / set pueden ser identificados

Un modo de direccionamiento especifica cmo calcular la direccin efectiva de un


operando en base a registros, constantes

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
direccin 300h. As pues, la direccin de inicio del dato es conocida Y el tamao 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 direccin de inicio est en BX

Base + Desplazamiento
Ej: MOV AX, [BX + 8]. BX sumado al valor marcan la direccin de inicio del dato a
copiar a AX.

Ms modos: Implcito, base + ndice + desplazamiento

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 operacin muy verstil

Es una operacin capaz de modificar directamente la memoria

MOV opDst, opSrc

ADICIN

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

SUSTRACCIN

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

COMPARACIN

CMP opDst, opSrc

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

Los operandos permanecen inalterados pero los flags se actualizan, pudindose consultar a
continuacin mediante instrucciones de bifurcacin 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

AND / Y LGICO

AND opDst, opSrc

Se almacena en el destino el resultado de hacer operacin y con cada bit de los operandos

OR / O LGICO

OR opDst, opSrc

Se almacena en el destino el resultado de hacer operacin o con cada bit de los operandos

XOR / O EXCLUSIVO LGICO

XOR opDst, opSrc

Se almacena en el destino el resultado de hacer operacin o lgico con cada bit de los
operandos

La operacin XOR es slo 1 cuando los valores comparados son distintos

NOT / NO LGICO

NOT opDst

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


complemento a uno

SALTO INCONDICIONAL

JMP opDst

Transfiere el control incondicionalmente al operando, que puede ser una direccin o una
etiqueta

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

INCREMENTO Y DECREMENTO

INC opDst

DEC opDst

Suma una unidad al operando destino

Resta una unidad del operando destino

Flags como el Flag zero se ven afectados por el resultado

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

Documentacin
http://schweigi.github.io/assemblersimulator/instruction-set.html

You might also like