Hernandez_Hernandez_Practica web de la sesion 12.pptx
Microporcesadores registro
1. República Bolivariana de Venezuela
Ministerio de Educación Superior
I.U.P. Santiago Mariño
MICROPROCESADORES
Marcos Barboza C.I: 15.059.191
Jose Avila C.I: 15.561.211
Augusto Trejo C.I: 20.283.384
Edixon Barreto C.I: 22.369.672
Maracaibo, 05 de Mayo del 2014
2. INDICE
REGISTRO E INSTRUCCIONES DE MICROPROCESADORES
CONCEPTO GENERAL
REGISTROS DE SEGMENTO
REGISTRO APUNTADOR DE INSTRUCCIONES
REGISTROS DE PROPÓSITOS GENERALES
REGISTRO ÍNDICE
BASES NUMEMRICAS DE REPRESENTACION
LOS TIPOS DE INSTRUCCIONES
ARITMETICAS
MOVIMIENTO DE DATOS
INTRUCCIONES LOGICAS
INSTRUCCIONES DE COMPARACION
INSTRUCCIONES DE SALTO
INSTRUCCIONES DE ENTRADA/SALIDA
INSTRUCCIONES DE CONTROL
INSRUCCIONES DE DESPLAZAMIENTO
INSTRUCCIONES DE BIT
BASES NUMEMRICAS DE REPRESENTACION
MEDIOS DE DIRECCIONAMIENTO
DIRECCIONAMIENTO INMEDIATO
DIRECCIONAMIENTO IMPLICITO
DIRECCIONAMIENTO ABSOLUTO
4. REGISTRO E INSTRUCCIONES DE MICROPROCESADORES
1. CONCEPTO GENERAL
Los registros del procesador se emplean para controlar instrucciones en
ejecución, manejar direccionamiento de memoria y proporcionar capacidad
aritmética. Los registros son espacios físicos dentro del microprocesador con
capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se
emplee. Los registros son direccionables por medio de una viñeta, que es una
dirección de memoria. Los bits, por conveniencia, se numeran de derecha a
izquierda (15,14,13…. 3,2,1,0), los registros están divididos en seis grupos los
cuales tienen un fin especifico. Los registros se dividen en:
Registros de segmento
Registros de apuntadores de instrucciones
Registros apuntadores
Registros de propósitos generales
Registro índice
Registro de bandera.
2. REGISTROS DE SEGMENTO.
Un registro de segmento se utiliza para alinear en un limite de párrafo o
dicho de otra forma codifica la dirección de inicio de cada segmento y su dirección
en un registro de segmento supone cuatro bits 0 a su derecha.
Un registro de segmento tiene 16 bits de longitud y facilita un área de
memoria para direccionamientos conocidos como el segmento actual. Los
registros de segmento son:
Registro CS
Registro DS
Registro SS
Registro ES
Registro FS y GS
Registro CS.
5. El DOS almacena la dirección inicial del segmento de código de un
programa en el registro CS. Esta dirección de segmento, mas un valor de
desplazamiento en el registro de apuntado de instrucción (IP), indica la dirección
de una instrucción que es buscada para sí ejecución. Para propósito de
programación normal, no e necesita referenciar el registro CS.
Registro DS. La dirección inicial de un segmento de datos de programa es
almacenada en el registro DS. En términos sencillos, esta dirección, mas un valor
de desplazamiento en una instrucción, genera una referencia a la localidad de un
bytes especifico en el segmento de datos.
Registro SS. El registro SS permite la colocación en memoria de una pila,
para almacenamiento temporal de direcciones y datos. El DOS almacena la
dirección de inicio del segmento de pila de un programa en el registro SS. Esta
dirección de segmento, más un valor de desplazamiento en el registro del
apuntador de la pila (SP), indica la palabra actual en la pila que está siendo
direccionada. Para propósitos de programación normal, no se necesita referenciar
el registro SS.
Registro ES Algunas operaciones con cadenas de caracteres (datos de
caracteres) utilizan el registro esta de segmento para manejar el direccionamiento
de memoria. En este contexto, el registro ES esta asociado con el registro DI
(índice) . un programa que requiere el uso del registro ES puede inicializarlo con
una dirección apropiada.
Registros FS y GS. Son registros extra de segmento en los procesadores
80386y posteriores a estos procesadores.
3. REGISTRO APUNTADOR DE INSTRUCCIONES.(IP)
El registro apuntador de instrucciones (IP) de 16 bits contiene el
desplazamiento de dirección de la siguiente instrucción que se ejecuta.
El registro IP esta asociado con el registro CS en el sentido de que el IP
indica la instrucción actual dentro del segmento de código que se esta ejecutando
actualmente.
Registros apuntadores.
Los registros apuntadores están asociados con el registro SS y permiten al
procesador accesar datos en el segmento de pila los registros apuntadores son
dos:
6. El registro SP
El registro BP
Registro SP.
El apuntador de pila IP de 16 bits esta asociado con el registro SS y
proporciona un valor de desplazamiento que se refiere a la palabra actual que esta
siendo procesada en la pila.
El ejemplo siguiente el registro SS contiene la dirección de segmento
27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que
esta siendo procesada en la pila el microprocesador combina las direcciones en el
SS y el PP:
Registro BP.
El registro BP de 16 bits facilita la referencia de parámetros, los cuales son
datos y direcciones transmitidos vía lapida.
4. REGISTROS DE PROPÓSITOS GENERALES.
Los registros de propósitos generales AX, BX, CX y DX son los caballos de
batalla o las herramientas del sistema. Son los únicos en el sentido de que se
puede direccionarlos como una palabra o como una parte de un byte. El ultimo
byte de la izquierda es la parte "alta", y el ultimo byte de la derecha es la parte
"baja" por ejemplo, el registro CX consta de una parte CH (alta) y una parte CL
(baja), y usted puede referirse a cualquier parte por si nombre. Ñas instrucciones
siguientes mueven ceros a los registros CX, CH y CL respectivamente.
Mov CX, 00
Mov CH, 00
Mov CL, 00
Los procesadores 80386 y posteriores permiten el uso de todos registros de
propósito general, mas versiones de 32 bits; EAX, EBX y EDCX.
El registro AX: el acumulador principal, es utilizado para operaciones que
implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las
instrucciones para multiplicar, dividir y traducir suponen el uso del AX. También,
algunas operaciones generan código más eficientes si se refiere al AX en lugar de
los otros registros.
7. Registro BX: El BX es conocido como el registro base ya que es el único
registro de propósitos generales que pueden ser unos índices para
direccionamiento indexado. También es común emplear al BX para cálculos.
Registro CX: El CX es conocido como el registro contador. Puede contener
un valor para controlar el número de veces que un ciclo se repite o un valor para
corrimiento de bits, hacia la derecha o hacia la izquierda. El CX también es usado
para muchos cálculos.
Registro DX: El DX es conocido como el registro de datos. Algunas
operaciones de entrada/salida requieren su uso, y las operaciones de
multiplicación y división con cifras grandes suponen al DX y al AX trabajando
juntos. Puede usar los registros de propósitos para suma y resta de cifras de 8, 16,
32 bits.
5. REGISTRO ÍNDICE.
Los registros SI y DI están disponibles para direccionamientos indexados y
para sumas y restas. Que son la operaciones de punta.
Registro SI. El registro índice de 16 bits es requerido por algunas
operaciones con cadenas (de caracteres). En este contexto, el SI está asociado
con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un
registro ampliado a 32 bits, el ESI.
Registro DI: El registro índice destino también es requerido por algunas
operaciones con cadenas de caracteres. En este contexto, el Di está asociado con
el registro ES. Los procesadores 80386 y posteriores permiten el uso de un
registro ampliado a 32 bits, el EDI.
Registro de bandera.
Los registros de banderas sirven parar indicar el estado actual de la
maquina y el resultado del procesamiento, Cuando algunas instrucciones piden
comparaciones o cálculos aritméticos cambian el estado de las banderas.
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.
8. 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.
9. 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
10. 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
11. 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).
MEDIOS 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:
12. a) La instrucción apunta a un registro que contiene la información deseada
(direccionamiento también llamado de registro).
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.
13. 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