Sunteți pe pagina 1din 5

5.

2 CONJUNTO DE INSTRUCCIONES Y LENGUAJE ENSAMBLADOR



Conjunto de instrucciones
Un conjunto de instrucciones o repertorio de instrucciones, juego de instrucciones o ISA (del
ingls Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones) es una especificacin que detalla las
instrucciones que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos
implementados por un diseo particular de una CPU. El trmino describe los aspectos del procesador generalmente
visibles a un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de
memoria y las interrupciones, entre otros aspectos.
Existe principalmente de 3 tipos: CISC (Complex Instruction Set Computer), RISC (Reduced Instruction Set Computer) y
SISC (Simple Instruction Set Computing).
La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de caractersticas de
la microarquitectura, que son los elementos y tcnicas que se emplean para implementar el conjunto de instrucciones.
Entre estos elementos se encuentran las microinstrucciones y los sistemas de cach.
Procesadores con diferentes diseos internos pueden compartir un conjunto de instrucciones; por ejemplo,
el Intel Pentium y AMD Athlon implementan versiones casi idnticas del conjunto de instrucciones x86, aunque tienen
diseos diferentes.

Implementacin del conjunto de instrucciones
Cualquier conjunto de instrucciones se puede implementar de varias maneras. Todas las maneras de implementar un
conjunto de instrucciones dan el mismo modelo programado, y todas pueden hacer funcionar los mismos ejecutables
binarios. Las varias maneras de implementar un conjunto de instrucciones dan diversas compensaciones entre el coste,
el funcionamiento, el consumo de energa, el tamao, el etc.
Al disear microarquitecturas, los ingenieros usaron bloques de circuitos electrnicos duramente-conectados
(diseado a menudo por separado) por ejemplo, los multiplexores, los contadores, los registros, ALUs etc. Un cierto tipo
del lenguaje de transferencia de registros es a menudo usado para describir la codificacin y la secuencia de cada
instruccin de ISA usando esta microarquitectura fsica.
Hay tambin algunos nuevos diseos de CPU que compilan el conjunto de instruccin a una RAM escribible o FLASH
dentro de la CPU (tal como el procesador Recursiv y el Imsys Cjip), o FPGA (computacin reconfigurable). Western Digital
MCP-1600 es un ejemplo antiguo, usando una ROM dedicada, separada del microcdigo.
ISA se puede tambin emular en software por un intrprete. Naturalmente, debido a la interpretacin de overhead, es
ms lento que ejecutar programas directamente sobre el hardware emulado. Hoy, es prctica para los vendedores de
nuevos ISAs o microarchitectures poner emuladores del software a disposicin de los desarrolladores de programas
informticos antes de que la implementacin del hardware est lista.
Diseo del conjunto de instrucciones
La densidad del cdigo
En computadoras antiguas, la memoria del programa era costosa, as que minimizar el tamao de un programa para
asegurar que va a caber en la memoria limitada era a menudo central. As el tamao combinado de todas las
instrucciones necesit realizar una tarea particular, la densidad del cdigo, era una caracterstica importante de
cualquier sistema de instruccin. Las computadoras con alta densidad del cdigo tambin tenan a menudo
instrucciones complejas para la entrada del procedimiento, los retornos parametrizados, los lazos etc. Sin embargo, "
instrucciones CISC" combinan simplemente una operacin bsica de la ALU, tal como " add", con el acceso de uno o ms
operandos en memoria (usando modos de direccin tales como directo, indirecto, indexado). Ciertas arquitecturas
pueden permitir dos o tres operandos (incluido el resultado) directamente en memoria o pueden permitir realizar
funciones tales como el incremento automtico del puntero.
RISC, fueron los primeros implementados con profundidad en el perodo de rpido crecimiento de las memorias de
subsistemas, se reduce el cdigo con el fin de simplificar el circuito de aplicacin y con ello tratar de aumentar el
rendimiento a travs de las frecuencias de reloj ms elevadas y el uso de ms registros. Las instrucciones RISC suelen
realizar slo una operacin, como una "suma" de registros o una "carga" de una posicin de memoria en un registro,
tambin suelen utilizar una longitud de instrucciones fijas, mientras que un conjunto de instrucciones tpicas CISC tiene
instrucciones muchos ms cortas que esta longitud fija.
Nmero de operandos
El conjunto de instrucciones puede ser clasificado por el nmero mximo de operandos explcitamente especificados en
las instrucciones. (en los ejemplos que siguen, a, b y c se refieren a celdas de memoria, mientras que reg1 y sucesivos se
refieren a los registros de la mquina).
0-operando, tambin llamada mquina de pila: todas las operaciones aritmticas se ejecutan en la parte superior de una
o dos posiciones de la pila, push y pop son las instrucciones utilizadas para acceder a la memoria: push a, push b, add,
pop c.
1-operando (mquinas de una direccin), tambin llamadas mquinas de acumulador, incluida en la mayora de las
primeras computadoras y muchos microcontroladores pequeos: la mayora de instrucciones especifican un operando
explcito a la derecha (un registro, una posicin de memoria, o una constante) y un operando a la izquierda: load a, add
b, store c.
2-operando la mayora de las mquinas CISC y RISC entran en esta categora: CISC load a, reg1, add reg1, b; store
reg1, c RISC - cargas que requieren la memoria explcita, las instrucciones seran: load a,reg1; load b,reg2; add reg1,reg2;
store reg2,c
3-operando, permite una mejor reutilizacin de los datos: CISC - bien una sola instruccin: add a, b, c, o ms
generalmente: move a,reg1; add reg1,b,c como la mayora de las mquinas se limitan a dos operandos de memoria. RISC
- Debido a la gran cantidad de bits necesarios para codificar los tres registros, este esquema no suele estar disponible en
los procesadores RISC con pequeas instrucciones de 16 bits: load a,reg1; load b,reg2; add reg1+reg2->reg3; store
reg3,c;
ms operandos, algunas mquinas CISC permiten una variedad de modos de direccionamiento que permiten ms de 3
operandos (registros o accesos a memoria), como el VAX "POLY", instruccin de evaluacin de polinomi
Caractersticas que debe tener un conjunto de instrucciones
Las caractersticas que se pretende que tenga un conjunto de instrucciones son cuatro, principalmente:
Completo: Que se pueda realizar en un tiempo finito cualquier tarea ejecutable con un ordenador (computable
o decidible).
Eficiente: Que permita alta velocidad de clculo sin exigir una elevada complejidad en su UC y ALU y sin
consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en un tiempo razonable minimizando el
uso de los recursos.
Autocontenidas: Esto es, que contengan en s mismas toda la informacin necesaria para ejecutarse.
Independientes: Que no dependan de la ejecucin de alguna otra instruccin.
Se puede comprobar que para que un conjunto de instrucciones sea completo solo se necesitan cuatro instrucciones:
-> escritura
-> mover a la izquierda una posicin y leer
-> mover a la derecha una posicin y leer
-> parar
Tipos de instrucciones y ejemplos
Transferencia de datos: Copian datos de un origen a un destino, sin modificar el origen y normalmente sin
afectar a los flags o indicadores de condicin. Pueden transferir palabras, fracciones de palabras (bytes, media
palabra) o bloques completos de n bytes o palabras.
Estas operaciones pueden ser:
-> registro - registro
-> registro - memoria
-> memoria - registro
-> memoria - memoria
Se clasifican en cuatro grupos:
-> salto incondicional
-> salto condicional
-> Llamada a subrutinas
-> Gestin de las interrupciones
saltos: Pueden ser condicionales o incondicionales, se suelen especificar como jump o brantch, y en el caso de
los condicionales se suele llamar jcond o bcond donde cond es una o ms letras que indican la condicin que ha
de cumplirse para que el salto se produzca.
-> Incondicional: salta sin comprobar ninguna condicin.
Nemotcnicos ms frecuentes: jump o brantch
-> Condicional: salta si la condicin se cumple.
Nemotcnicos ms frecuentes: jcond o bcond
Llamadas a subrutinas: Invoca la ejecucin de funciones anteriormente definidas.
Nemotcnicos ms frecuentes: call (llamada) y ret (retorno)
Gestin de interrupciones: Se usan para llamar a las rutinas de servicio de interrupcin y esto se puede hacer
por hardware o bien por software. Necesita una instruccin similar a return para retornar al contexto anterior
pero restableciendo el estado de la mquina, para no afectar a la aplicacin a la cual se interrumpi (iret).
Instrucciones de E/S: Son instrucciones de transferencia salvo que el origen/destino de dicho flujo es un puerto
de un dispositivo de E/S. Estas instrucciones pueden darse mediante dos alternativas:
->E/S "mapeada" en memoria: Los perifricos tienen direcciones asignadas de la MP por lo que no se necesitan
instrucciones especiales y las operaciones se realizan con las ya vistas, como son: load, store y move.
->E/S independiente: Necesitan unas instrucciones especiales para indicarle al procesador que nos estamos refiriendo al
mapa de direcciones de E/S, ya que este mapa y el mapa de memoria son disjuntos.
Nemotcnicos ms frecuentes:
input o read: Pemite leer informacin de un puerto y trasladarla a memoria principal.
output o write: Permite escribir informacin en un puerto de un dispositivo.
test i/o: Lee informacin de control de un perifrico.
control i/o: Enva informacin de control hacia un perifrico.
Instrucciones de control y miscelneas:
Nemotnicos ms frecuentes:
halt: Detiene la ejecucin del programa hasta que una interrupcin arranca otro programa.
wait: Sirve para deterner la ejecucin de un programa hasta que sucede un determinado evento que no es una
interrupcin (otra condicin externa al primer programa).
nop: No realiza ninguna operacin, sirve para rellenar huecos en un programa o temporizar esperas.
enable: Habilita las interrupciones.
disable: Deshabilita las interrupciones.
test and set: Se utiliza para la implementacin de la exclusin mutua, esto es, que un procesador no pueda
acceder a un determinado recurso que est siendo usado por otro procesador en ese mismo momento.
Se usan como semforos, esto es, se declara una variable entera que tendr el valor 0 si el recurso esta libre y 1 si est
siendo utilizado, de manera que si un procesador comprueba y el semforo est en 1 tendr que esperar hasta que este
cambie a 0. (1 = s.rojo y 0 = s.verde).

El lenguaje ensamblador
En el lenguaje ensamblador el programador utiliza instrucciones simblicas en lugar de instrucciones de mquina y
nombres descriptivos para los elementos de datos y para las localidades de memoria. Usted escribe un programa en
ensamblador de acuerdo con un conjunto estricto de reglas que despus utiliza el programa traductor de ensamblador
para convertir el programa ensamblador en cdigo mquina.
Existen 2 clases de lenguajes de programacin: de alto nivel y de bajo nivel. Los programadores que escriben en un
lenguaje de alto nivel (como C y Pascal), codifican comandos poderosos, cada uno de los cuales puede generar muchas
instrucciones en lenguaje de mquina. Por otro lado, los programadores que escriben en un lenguaje ensamblador de
bajo nivel codifican instrucciones simblicas, cada una de las cuales genera una instruccin en lenguaje mquina. A
pesar del hecho de que codificar en un lenguaje de alto nivel es ms productivo, algunas ventajas de codificar en
lenguaje ensamblador son:
Proporciona ms control sobre el manejo particular de los requerimientos de hardware.
Genera mdulos ejecutables ms pequeos y ms compactos.
Con mayor probabilidad tiene una ejecucin ms rpida.
Una prctica comn es combinar los beneficios de ambos niveles de programacin. Un lenguaje de alto nivel utiliza un
compilador para traducir el cdigo fuente a lenguaje mquina. Un lenguaje de bajo nivel utiliza un ensamblador para
realizar la traduccin.
Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los dos tipos de enunciados o lneas de
programacin son:
1.- Instruccin, tal como MOV y ADD, que el ensamblador traduce a cdigo objeto
2.- Directiva, que indican al ensamblador que realice una accin especfica, como definir un elemento de dato.
El nico lenguaje que entienden los microcontroladores es el cdigo mquina formado por ceros y unos del
sistema binario.
El lenguaje ensamblador expresa las instrucciones de una forma ms natural al hombre a la vez que muy cercana
al microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en cdigo mquina.
El lenguaje ensamblador trabaja con nemnicos, que son grupos de caracteres alfanumricos que simbolizan las
rdenes o tareas a realizar.
La traduccin de los nemnicos a cdigo mquina entendible por el microcontrolador la lleva a cabo un
programa ensamblador.
El programa escrito en lenguaje ensamblador se denomina cdigo fuente (*.asm). El programa ensamblador
proporciona a partir de este fichero el correspondiente cdigo mquina, que suele tener la extensin *.hex.

S-ar putea să vă placă și