| |
MICROPROCESADORES
- EL SOFTWARE: LAS INSTRUCCIONES |
| |
|
| |
Los
sistemas construídos sobre la base de los microprocesadores, requieren
para su puesta en marcha, el desarrollo del software, es decir, el desarrollo
de programas que una vez contruídos, son almacenados en las memorias
permanentes (PROM, EPROM,...) del sistema, donde son buscados por el microprocesador
para desarrollar todas las funciones y tareas deseadas. |
| |
|
| |
-
DESARROLLO |
| |
|
| |
Un
programa esta constituido por un conjunto ordenado de instrucciones,
que constituyen el cuerpo principal del programa y uno o más
bloques de datos iniciales necesarios para una correcta ejecución.
El proceso básico de ejecución de un programa requiere
por parte del microprocesador, la repetición de los siguientes
pasos:
Leer de la memoria una instrucción del programa. Interpretar
la instrucción leída. Ejecutar dicha instrucción.
Debemos considerar además que los microprocesadores trabajan
solamente con lenguaje de bajo nivel, es decir, trabajan con lenguaje
máquina. Cada microprocesador o familia de microprocesadores,
posee su propio lenguaje máquina que determina las capacidades
propias de cada familia. Las instrucciones máquina son almacenadas
en la memoria en forma de bytes, es decir, en forma de unos y ceros
empleando por tanto el sistema binario de numeración. Sin embargo
este sistema es muy complejo para trabajar directamente en él,
por lo que se emplean otros sistemas como el hexadecimal, BCD, etc.
para la representación de datos.
Para construir los programas, normalmente se emplean lenguajes de alto
nivel, y luego se transforman los programas así escritos a lenguaje
máquina asequible para el microprocesador. No obstante en nuestro
caso emplearemos un lenguaje de bajo nivel (ensamblador) que trabaja
con abreviaturas alfabéticas denominadas mnemónicos que
constituyen las operaciones e instrucciones que ejecutará el
microprocesador. Durante el desarrollo de este tema veremos las principales
bases numéricas de representación, así como los
diferentes tipos de instrucciones, modos de direccionamiento y se realizará
un estudio de todo el repertorio de instrucciones propio del microprocesador
8085. Es conveniente leer todas y cada una de las instrucciones para
ir familiarizándose con ellas y entender su modo de funcionamiento.
Todo lo tratado aquí, son aspectos básicos de la programación
que nospermiten crear programas ejecutables en el sistema electrónico
presentado en esta serie de artículos.
BASES NUMEMRICAS DE REPRESENTACION
Ya se ha comentado que es el lenguaje máquina el único
que el micrprocesador es capaz de tratar, es decir, solamente trabaja
con unos y ceros. Este lenguaje resulta inapropiado para las personas,
por lo que se desarrollan otros sistemas de representación más
sencillos o más cómodos de manejar. En primer lugar debemos
fijarnos en que el microrpocesador trabaja con bloques de información
normalizados. Podemos destacar en este terreno:
EL BIT: Como unidad de información más elemental que adopta
dos únicos estados, el uno o el cero.
EL OCTETO O BYTE: Constituído por una cadena de ocho bits.
LA PALABRA: Es el tamaño de información que el microprocesador
puede manejar en paralelo. En función de la potencialidad del
microprocesador tendremos palabras de 8 bits, 16 bits, 32 bits, etc.
Estableciendo ya el tipo de información con el que se va a trabajar,
pasamos ahora a ver las bases numéricas o de representación
que emplearemos durante la programación. Las más comunes
son:
SISTEMA DECIMAL: Es el sistema que habitualmente empleamos en nuestra
vida diaria, y por tanto será el sistema que se empleará
normalmente para introducir datos y sacar datos del sistema. Lógicamente
este sistema de representación numérico dispone de diez
dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9).
SISTEMA BINARIO: Solo emplea dos unidades básicas de representación
(0 y 1). Para encontrar la expresión decimal de cualquier número
binario, se procede de forma similar al sistema decimal, pero empleando
el 2 com base del sistema. Por ejemplo: |
| |
|
| |
|
| |
|
| |
Para
realizar el proceso contrario, es decir para transformar un número
decimal a binario, puede emplearse un método muy sencillo que consiste
en dividir sucesivamente dicho número por la base binaria 2. El
número binario se construye tomando el último cociente y
poniendo a continuación de forma consecutiva los restos obtenidos
en todas las divisiones de la última a la primera.
SISTEMA DECIMAL CODIFICADO EN BINARIO (BCD): Se trata de un caso particular
del binario que emplea cuatro bits para representar los números
decimales del 0 al 9. Por tanto para transformar un número decimal,
no tendremos más que tomar cada una de sus cifras y transformarla
a binario empleando 4 bits. Por ejemplo: 279 = 0010 0111 1001
SISTEMA EXCESO A TRES: Toma como referencia el sistema BCD, sin más
que añadir a cada digito el valor 3, es decir sumar: |
| |
|
| |
|
| |
|
| |
SISTEMA
HEXADECIMAL: Es uno de los más empleados en programación.
Sus diez primeros digitos se corresponden con los del sistema decimal
y los seis restantes son las seis primeras letras mayúsculas del
alfabeto (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). La base de
este sistema es el 16 y todas sus cifras pueden ser expresadas con cuatro
bits. Para convertir un número binario a hexadecimal, agruparemos
sus dígitos o bits de cuatro en cuatro y transformaremos cada uno
de ellos de forma individual, obteniendo así la representación
hexadecimal. Por ejemplo: |
| |
|
| |
|
| |
|
| |
SISTEMA
DE REPRESENTACION ASCII: Se trata de un sistema de representación
de datos empleado para facilitar intercambios de información. Es
uno de los sistemas más empleados en la actualidad (junto al sistema
EBCDIC). La codificación se lleva a cabo empleando una palabra
de 8 bits, es decir, un octeto para cada carácter de información.
Para encontrar el valor de un carácter numérico de una representación
ASCII, es suficiente con restar el valor 48 y al contrario para encontrar
la representación ASCII de un digito decimal habrá que sumar
48. |
| |
|
| |
|
| |
|
| |
LOS
TIPOS DE INSTRUCCIONES:
Después de haber tratado de forma superficial los sistemas de
representación, vamos a ver los distintos tipos de instrucciones
que utiliza un microprocesador. Básicamente puede decirse que
el bloque de instrucciones debe ser completo y eficaz de modo que podamos
realizar todos los cálculos necesarios de forma más rápida
y precisa posible.
Una de las principales características de todo microprocesador
es disponer de un buen conjunto de instrucciones que le den la mayor
versatilidad posible. Se establecen los siguientes grupos, tipos o conjuntos
de instrucciones:
1- ARITMETICAS: Son las instrucciones que realizan operaciones de tipo
aritmético como sumas, restas, incrementos, decrementos, etc.
Todas las operaciones de este tipo afectan al registro de estado, es
decir a los flags.
2- MOVIMIENTO DE DATOS: Este tipo de instrucciones de movimiento o transferencia
de datos, permiten realizar una copia del contenido de un registro o
dirección de memoria (origen), en otro registro o dirección
de memoria (destino), sin alterar el contenido del origen.
3- INTRUCCIONES LOGICAS: Realizan operaciones lógicas entre los
operandos. Afectan a los flags según sea el caso y las operaciones
se realizan bit a bit entre los datos.
4- INSTRUCCIONES DE COMPARACION: Son operaciones de restar o operaciones
XOR entre dos operandos. Afectan a los flags pero no se almacena el
resultado.
5- INSTRUCCIONES DE SALTO: Son instrucciones de modificación
de secuencia que alteran la ejecución normal del programa, cargando
el contador de programa con la nueva dirección en la que deseamos
continúe ejecutándose el programa. Los saltos o bifurcaciones
pueden ser:
- CONDICIONALES: Cuando son controlados por el estado de un indicador
o flag, y basándose en dicho estado se decide si se salta o no.
- INCONDICIONALES: Cuando modifican el contador de programa sin condición
previa. Dentro de cada uno de estos tipos, podemos encontrar además
la particularidad de que al efectuar los saltos se realicen con posibilidad
de retorno o no.
6- INSTRUCCIONES DE ENTRADA/SALIDA: Son en realidad instrucciones de
transferencia, pero no entre registros o posiciones de memoria, sino
con elementos periféricos que permiten la comunicación
del microprocesador con el exterior.
7- INSTRUCCIONES DE CONTROL: Sirven para actuar internamente sobre el
microprocesador, provocando detenciones en la ejecución del programa,
etc.
8- INSTRUCCIONES DE BIT: Trabajan o tratan bits independientes.
9- INSRUCCIONES DE DESPLAZAMIENTO: Desplazan o rtoan hacia la izquierda
o hacia la derecha los bits de un registro (acumulador).
LOS MODOS DE DIRECCIONAMIENTO:
Los modos de direccionamiento son aquellos procedimientos empleados
por el microprocesador para poder acceder a determinados operandos,
instrucciones, posiciones de memoria, registros de entrada/salida, etc.
Por tanto el objeto del direccionamiento es un valor o dato que se encuentra
en un lugar de la memoria, en algún registro o en la propia instrucción.
Los diferentes modos de direccionamiento que pueda emplear un microprocesador
le proporcionan un determinado nivel de potencialidad, permitiéndole
manejar datos y realizar operaciones con mayor facilidad. En general
podemos diferenciar los siguientes tipos o modos de direccionamiento:
1- DIRECCIONAMIENTO INMEDIATO: En este caso el objeto (un operando)
se encuentra incluído en la instrucción, es decir, a continuación
del código de la instrucción se añade el operando
propiamente dicho. Las instrucciones que emplean este direccionamiento
pueden ser de dos o tres bytes y son instrucciones de ejecución
rápida y sencilla.
2- DIRECCIONAMIENTO IMPLICITO: Las instrucciones que emplean este modo
de direccionamiento tienen un solo byte y es la propia instrucción
la que indica qué registro o dirección de memoria se va
a utilizar en la operación.
3- DIRECCIONAMIENTO ABSOLUTO: En este caso las instrucciones incluyen
la dirección de memoria donde se encuentra el dato con el que
se va a operar. En este tipo de direccionamiento pueden darse tres supuestos:
a) La instrucción apunta a un registro que contiene la información
deseada (direccionamiento también llamado de regsitro).
b) La instrucción contiene la dirección completa en la
que se encuentra el dato, empleando para ello tres bytes.
c) Cuando la instrucción se refiere solo a una parte de la memoria
(pàgina). En este caso el byte más alto lo suministra
el contador de programa y el byte más bajo se expresa a continuación
del código de instrucción, por tanto solo se emplean dos
bytes (Este direccionamiento también se llama de página
base).
4- DIRECCIONAMIENTO DIRECTO RELATIVO: La instrucción en este
caso contiene un valor determinado al que podemos llamar V. La dirección
total se calcula sumando a V el valor que esté almacenado en
un registro alq ue haga referencia la instrucción. El valor de
V puede ser tanto positivo como negativo.
5- DIRECCIONAMIENTO INDIRECTO: La instrucción contiene una dirección
a la que llamaremos D1. El contenido de D1 no es el objeto directo de
nuestra instrucción, sino que contiene otra dirección
que llamaremos D2. Esta nueva dirección D2 es la que contiene
el dato que sí es objeto de la instrucción.
Expresados ya los modos de direccionamiento con carácter general,
pasamos ahora a ver los modos de direccionamiento que utiliza el microprocesador
8085 en particular, que son los cuatro siguientes:
DIRECCIONAMIENTO DIRECTO ABSOLUTO: La instrucción contiene la
dirección exacta y completa donde se encuentra el dato. Por ejemplo:
LHLD A716H
DIRECCIONAMIENTO POR REGISTRO: La instrucción lleva el registro
en el que está el dato que va a ser tratado. Como por ejemplo:
MOV A,B
MOV B,C
DIRECCIONAMIENTO POR REGISTRO INDIRECTO: En la instrucción se
especifica un registro cuyo contenido apunta a una dirección
de memoria en la que se encuentra el dato. Por ejemplo:
MOV A,M
M es una referencia simbólica a una dirección apuntada
o señalada por el par de registros HL.
DIRECCIONAMIENTO INMEDIATO: La instrucción contiene el dato con
el que se desea operar, pudiendo ser el dato de uno o dos bytes:
LXI H,A0B7H
ADI 3AH
|
| |
|
| |
|
| |
Sobre bibliografía de: Ing. Celestino Benítez Vázquez |
| |
|