• No se han encontrado resultados

Microprocesador-8085-15NOV2017

N/A
N/A
Protected

Academic year: 2020

Share "Microprocesador-8085-15NOV2017"

Copied!
78
0
0

Texto completo

(1)

MICROPROCESADOR

8085

UNIVERSIDAD SIMÓN BOLÍVAR SEDE DEL LITORAL

Dpto. de Tecnología Industrial MICROPROCESADORES TI-3223

(2)

Contenido

Diagrama del microprocesador 8085

Estructura de la pastilla del microprocesador

8085

(3)
(4)

Estructura del chip

El bus de datos y direcciones está multiplexado

esto significa que comparten algunos pines.

Como el bus de direcciones utiliza 16 patillas y el

de datos sólo 8, 8 de los pines del bus de

(5)
(6)
(7)

Descripción del 8085

Registros

8 registros de 8 bits: 6 se utilizan como registros de

8 bits o combinados de 16 bits. 2 registros de 16 bits

Registro A

(8bits): Acumulador, se utiliza en

operaciones aritméticas, lógicas, de carga y

almacenamiento y de E/S.

Registros BC, DE Y HL

(8bits o combinados

16bits): Registros de propósito general. HL es el

puntero de datos y se usa para apuntar a

(8)

Descripción del 8085

Registros

Registro PC

(16 bits): Contador de Programa,

señala la posición de memoria de la siguiente

instrucción que se va a ejecutar.

Registro SP

(16 bits): Puntero de dato, apunta a

la parte superior de la pila de la RAM

Registro de señalizadores

: cinco señalizadores

(9)

Descripción del 8085

Registros: Registro de señalizadores

S: Signo, se activa por una instrucción aritmético lógica,

indica el signo de un dato contenido en el acumulador

(1: negativo y 0: positivo)

Z: cero, (1: cero y 0 diferente de cero)

AC: arrastre auxiliar, indica overflow. Este se utiliza en

operaciones aritméticas de decimal codificado a binario.

P: paridad, numero de bits 1 del acumulador si contiene

un numero par de 1 se coloca en 1

CY: arrastre, se actualiza por operaciones aritméticas,

(10)

Descripción del 8085

Puntero de pila: contiene la dirección del ultimo byte

introducido en la pila. Incrementa cada vez que se saca

un dato de la pila y decrementa cada vez que se

introduce.

Interrupciones: las 5 entradas se observan del lado

izquierdo de la pastilla

TRAP: interrupción no enmascarable, prioridad 1, guarda en la pila el

contenido del acumulador y salta a la posición 0024h.

RST 7.5, RST 6.5 y RST 5.5: reinician el programa en una nueva

posición de memoria. Guardan en la pila el contenido del PC y salta a la posición de memoria 003CH, 0034H y 002CH respectivamente.

(11)

Descripción del 8085

Entrada y Salida serie:

instrucción RIM: transfiere datos desde la patilla

SID al bit 7 del acumulador

Instrucción SIM: se coloca 1 en el bit 6 del

(12)
(13)
(14)
(15)

Manejo de Datos e Instrucciones

en el 8085

La distribución en memoria de datos e instrucciones suele estar separada y claramente diferenciada. Esto se debe a que tanto datos como instrucciones son tratados de la misma forma según la situación en la que este, es decir, un dato no es un dato, ni una instrucción una instrucción, por sí sola. Depende de como sea tratada.

Los datos pueden ser de tres tipos. Se han distinguido tres tipos distintos de datos simples con los que trabajar en el ensamblador. La diferencia

fundamental entre estos tipos es el tamaño, como muestra la Tabla

Tipo Tamaño Ejemplos

Byte 8 bits 1, 10, 255, 127, -127, ...

Word 16 bits FE00h, 65535, FFFFh, ...

(16)

Manejo de Datos e Instrucciones

en el 8085

.DATA 100h

dB 1, 2 , 3, 4, 5, 6, 7, 8, 9, 0 ;DATOS

dB 32, 25, FFh, 32, -5, -120

dW 0, FFFFh, 01A0h ;POSICIONES DE MEMORIA

dS “Pulse una tecla” ;MENSAJE

Además, es posible emplear etiquetas durante una definición,

esto nos permite poder referenciar más adelante en el

(17)

Manejo de Datos e Instrucciones

en el 8085

La estructura de un bloque de instrucciones es la

siguiente:

. org <dirección origen>

[instrucción]

[instrucción]

[instrucción]

....

Dentro de cada instrucción hay cuatro partes o campos

separados:

(18)

Etiqueta

Es un campo de utilización opcional, puede tener una longitud de 1 a 255 caracteres. El primer carácter de la etiqueta debe ser una letra del alfabeto. Estos caracteres deben ir seguidos de dos puntos (:). Los códigos de instrucción están especialmente definidos por el ensamblador y no pueden ser utilizados como etiquetas.

El objetivo de una etiqueta es referenciar una dirección de memoria. Esto es, cuando una etiqueta se sitúa en la declaración de un dato o delante una instrucción de programa esta haciendo referencia a la dirección de memoria en la que se encuentra dicho dato o instrucción.

(19)

Etiqueta

Las etiquetas son sensibles a mayúsculas y

minúsculas.

Tienen que empezar al menos por una letra.

Tienen que ser menores de 255 caracteres.

No pueden coincidir con definiciones

anteriores.

(20)

Código de operación

Es el campo más importante de la instrucción ya que en el se define la operación a realizar. Cada una de las instrucciones tiene un código determinado. Por ejemplo, las letras "JMP" definen exclusivamente la

operación de "salto incondicional" y ninguna otra instrucción. No existen dos instrucciones con el mismo código ni dos códigos para una misma instrucción.

Después de las letras del campo del código, debe haber como mínimo un espacio en blanco.

A cada secuencia de letras que definen exclusivamente una operación se

denomina nemotécnico. Los nemotécnicos a diferencia que las etiquetas y los identificadores de definiciones no son sensibles a las mayúsculas ni

(21)

Operandos

Según el contenido del campo del código, el

campo del operando puede no existir, o consistir

en una cifra o palabra, o bien en dos, separados

ambas por una coma.

EI

JMP

MOV A , B

Salto

Instrucción sin Operandos

Instrucción con un operando

(22)

Comentario

La única regla que rige la utilización de los

(23)

INSTRUCCIONES DE

(24)

Instrucciones de transferencia de datos

A1.5.1. MO

V Movimiento

Esta serie de instrucciones transfieren datos entre los registros, la memoria y el acumulador. Ocupan un byte en la forma siguiente:

Podemos distinguir 3 casos:

Transferencia entre registros (direccionamiento registro).

Transferencia desde la memoria (direccionamiento registro indirecto).Transferencia a la memoria (direccionamiento registro indirecto).

•MOV R1, R2

El contenido del registro R2 es transferido al registro R1. R1 y R2 pueden ser los registros B, C, D, E, H, L o el acumulador A.

MOV R, M

El contenido de la dirección de memoria, cuya dirección está en los registros H-L, es transferido al registro R. R puede ser cualquiera de los registros A, B, C, D, E, H o L.

MOV M, R

(25)

Ejemplos transferencia de datos

Supongamos que el registro B contiene 00H y el registro C contiene 30H. La instrucción

MOV B,C

almacenará 30H en el registro B.

Supongamos que el registro H contiene 00H y el registro L contiene 30H. La instrucción

MOV M, A

almacenará el contenido del acumulador en la posición de memoria 0030H.

(26)

Instrucción STAX: Almacenar el contenido del

acumulador

Descripción

El contenido del acumulador se almacena en la posición de memoria

especificada por los registros B y C, o los registros D y E.

Ejemplo

Si el registro B contiene 3FH y el registro C contiene 16H, la instrucción

STAX B

(27)

Instrucción LDAX: Cargar el acumulador

Descripción

El contenido de la posición de memoria especificada por los registros B y C, o los registros D y E, reemplaza el contenido del acumulador.

Ejemplo

Si el registro D contiene 3FH y el registro E contiene 16H, la instrucción

LDAX D

(28)
(29)

CMC: Complementar acarreo

Instrucción: CMC

Bits afectados CY

Descripción:

(30)

STC: Activar Acarreo

Instrucción: STC

Bits afectados CY

Descripción:

(31)
(32)

INSTRUCCIONES DE UN REGISTRO

Instrucciones que operan

sobre un solo

registro o posición de memoria

. Si se

(33)

INR: Incrementa Registro o Memoria

Instrucción: INR

Bits afectados

Z, S, P, AC

Direccionamiento: Registro Indirecto

Descripción:

El contenido del registro o posición de memoria

especificados se incrementa en una unidad.

EJEMPLO:

(34)

INR: Incrementa Registro o Memoria

Ejercicio:

1. Realice el algoritmo y codifíquelo en

ensamblador que incremente el registro B en

1

2. Realice el algoritmo y codifíquelo en

(35)

INR: Incrementa Registro o Memoria

Ejercicio:

3. Realice el algoritmo y codifíquelo en

ensamblador que sume 5 números

consecutivos

4. Realice el algoritmo y codifíquelo en

ensamblador que sume 10 números

(36)

DCR: Decrementa Registro o Memoria

Instrucción: DCR

Bits afectados

Z, S, P, AC

Direccionamiento: Registro

Descripción:

El contenido del registro o posición de memoria

especificados se decrementa en una unidad.

EJEMPLO:

(37)

DCR: Decrementa Registro o Memoria

Ejercicio:

1. Realice el algoritmo y codifíquelo en

ensamblador que decremente el registro B

en 1

2. Realice el algoritmo y codifíquelo en

(38)

DCR: Decrementa Registro o Memoria

Ejercicio:

3. Realice el algoritmo y codifíquelo en

(39)

DAA: Ajuste decimal del acumulador

Instrucción: DAA

Bits afectados Z, S, P, CY, AC

• Direccionamiento: Registro

Descripción:

El número hexadecimal de 8 bits contenido en el acumulador se ajusta como dos dígitos de 4 bits codificados en binario decimal, según el proceso siguiente:

1. Si los cuatro bits menos significativos del acumulador representan un número mayor que 9, o si el bit de acarreo auxiliar es igual a uno, el acumulador se incrementa en seis unidades. Si no se presentan tales condiciones, el contenido del acumulador no varía.

2. Si los cuatro bits más significativos del acumulador representan ahora un número mayor que 9, o si el bit de acarreo es uno, los cuatro bits más significativos se incrementan en seis unidades. Asimismo, si no tienen lugar las circunstancias expuestas, el contenido del acumulador no se incrementa.

(40)

Ejemplo

Instrucción: DAA

Se desea realizar una suma decimal de dos números (40 + 80). Ambos bits de acarreo están a cero.

La secuencia de instrucciones podría ser:

MVI B,80H

MVI A,40H ; Acumulador = 40H

ADD B ; Acumulador = 40H + 80H = C0H DAA ; Acumulador = 20H

; Bit de acarreo = 1

La instrucción DAA opera de la siguiente forma:

Como el contenido de los bits [0 – 3] del acumulador es menor que 9 y el bit de acarreo auxiliar es cero, el contenido del acumulador no varía.

Como los 4 bits más significativos del acumulador representan un número mayor que 9, estos 4 bits se incrementan en 6 unidades, poniendo a uno el bit de

(41)
(42)

Ejemplo

Instrucción: DAA

Realice en el emulador seleccionado el caso descrito y explique

Posteriormente realice los ejercicios correspondientes a la practica 7

Acumulador C0H 1 1 0 0 0 0 0 0 CY

=

0

+ 6

60H 0 1 1 0 0 0 0 0 CY

=

0

(43)
(44)

Instrucción ANA: Función lógica AND entre

registro o memoria con acumulador

La tabla de verdad de la función lógica AND es:

A B R

(45)

Instrucción ANA: Función lógica AND entre

registro o memoria con acumulador

Ejemplo

Si el registro B contiene 6CH y el acumulador almacena 3AH, la instrucción

ANA B

realiza la siguiente operación:

Acumulador 3AH 0 0 1 1 1 0 1 0 Registro B 6CH 0 1 1 0 1 1 0 0

Nuevo acumulador 28H 0 0 1 0 1 0 0 0

(46)
(47)

Instrucciones de rotación del acumulador

Las Instrucciones de rotación del acumulador

realizan una rotación del contenido del

acumulador.

(48)

Instrucciones de rotación del acumulador

0 0 0 OPERAC 1 1 1

00 para RLC

01 para RRC

10 para RAL

11 para RAR

(49)

RLC: Desplazar el acumulador a la

izquierda

Instrucción: RLC

Bits afectados

CY

Descripción:

RLC rota un bit hacia la izquierda todo el contenido del acumulador,

transfiriendo el bit de más alto orden al bit de acarreo y al mismo tiempo a la posición de menor orden del acumulador.

Ejemplo:

(50)
(51)

RRC: Desplazar el acumulador a la derecha

Instrucción: RRC

Bits afectados

CY

Descripción:

RRC rota el contenido del acumulador un bit a la derecha, transfiriendo el bit de más bajo orden a la posición de más alto orden del acumulador, además pone el bit de acarreo igual al bit de menor orden del acumulador.

Ejemplo:

(52)
(53)

RAL: Desplazar el acumulador hacia la

izquierda a través del bit de acarreo

Instrucción: RAL

Bits afectados

CY

Descripción:

RAL hace girar el contenido del acumulador y el bit de acarreo un espacio de un bit hacia la salida (izquierda). El bit de acarreo que es tratado como si fuera del acumulador, se transfiere el bit de menor orden del acumulador. El bit de mayor orden del acumulador se transfiere al bit de acarreo. No tiene operandos.

Ejemplo:

• Supongamos que el acumulador contiene B5H. La instrucción RAL efectuará las siguientes modificaciones en el registro acumulador y en el bit de

(54)
(55)

RAR: Desplazar el acumulador hacia la

derecha a través del bit de acarreo

Instrucción: RAR

Bits afectados

CY

Descripción:

• RAR rota el contenido del acumulador y del bit de acarreo 1 bit de posición a la derecha. El bit de acarreo que es tratado como si fuera parte del

acumulador se transfiere al bit de más alto orden del acumulador. El bit de menor peso del acumulador se carga en el bit de acarreo. No existen

operandos en la instrucción RAR. Ejemplo:

• En este caso el acumulador contendrá el valor 6AH. La instrucción RAR

(56)

RAR: Desplazar el acumulador hacia la

derecha a través del bit de acarreo

(57)
(58)

Instrucciones de Salto o Bifurcación

Las instrucciones de bifurcación, se referencian

como instrucciones de salto, aunque los

términos salto y bifurcación se considerarán

sinónimos para este tema.

(59)

Instrucciones de Salto o Bifurcación

(60)

Ejemplo de una instrucción de salto

incondicional en lenguaje C

// Instrucción goto

#include <stdio.h>

main()

{ int i;

for ( i = 1; i < 10; i++ )

{ printf_s(" Ciclo numero i = %d\n", i );

if ( i == 3 ) goto stop; }

(61)

Instrucciones de salto incondicional en

lenguaje C

break (Instrucción)

continue (Instrucción)

return (Instrucción)

(62)

Herramientas relacionadas de algoritmos

Herramientas de Partición:

– Condicional Simple

– Condicional Doble

Herramientas de Iteración o ciclo

(63)
(64)
(65)

Instrucciones Adicionales de Salto o

Bifurcación: PCHL

Instrucción: PCHL

Bits afectados

Descripción:

PCHL carga el contenido de los registros H y L en el contador de programa. Como el procesador busca la siguiente instrucción en la siguiente dirección del contador de programa, PCHL tiene el efecto de una instrucción de salto. El contenido de H va a los 8 bits más altos de contador de programa y el contenido de L va a los 8 bits más bajos.

Ejemplo:

Si el registro H contiene A5H y el registro L contiene 9DH, la instrucción

PCHL

(66)
(67)

Instrucciones de Operaciones de Llamada y

retorno de Subrutina

Las instrucciones de llamada y vuelta o retorno de subrutina

son utilizadas siempre en parejas.

La instrucción de llamada de 3 bytes se utiliza en el programa

principal para hacer que el microprocesador salte a una

subrutina.

A continuación se describen las instrucciones que llaman a

subrutinas. Estas instrucciones operan en la misma forma que

las instrucciones de salto, provocando una alteración en la

(68)
(69)

Tipos de Instrucciones de Operaciones de

Llamada

(70)

Tipos de Instrucciones de Operaciones de

Retorno

(71)
(72)

Instrucción RST

Instrucción: RST

Bits afectados

Descripción:

Es una instrucción CALL para usar con interrupciones. RST carga el

contenido del contador de programa en el stack, para proveerse de una dirección de retorno y salta a una de las "ocho" direcciones determinadas previamente.

Un código de tres bits incluido en el código de operación de la instrucción RST especifica la dirección de salto. Esta instrucción es empleada por los periféricos cuando intentan una interrupción.

(73)

Instrucción del FLIP-FLOP de interrupción

(74)

Instrucción EI: Activar interrupciones

Instrucción: EI

Bits afectados

Descripción:

La instrucción EI pone en servicio el sistema de interrupciones a partir de la

siguiente instrucción secuencial del programa. Esta instrucción activa el flip-flop INTE.

Se puede desconectar el sistema de interrupciones poniendo una instrucción DI al principio de una secuencia, puesto que no se puede predecir la llegada de una interrupción.

Al final de la secuencia se incluye la instrucción EI que vuelve a habilitar el

(75)

Instrucción DI: Desactivar interrupciones

Instrucción: DI

Bits afectados

Descripción:

Esta instrucción desactiva el flip-flop INTE. Después de la ejecución de una

instrucción DI, el sistema de "interrupciones" esta sin posibilidad de ponerse en marcha. En aplicaciones que empleen las interrupciones, la instrucción DI se

emplea solamente cuando una determinada secuencia no debe ser interrumpida. Por ejemplo, se puede poner fuera de servicio el sistema de interrupciones

incluyendo una instrucción DI el principio del código de secuencia.

La interrupción TRAP del 8085 no puede ser puesta fuera de servicio. Esta

(76)
(77)

Instrucción IN: Entrada de Datos

Instrucción: IN

Bits afectados

Descripción:

La instrucción IN PORT lee los 8 bits de datos que hay en el "PORT" especificado y los carga en el acumulador. El operando debe ser un

número o una expresión que produzca un valor comprendido entre 00H y FFH.

Ejemplos:

La instrucción IN 2

deposita en el acumulador los datos de entrada del puerto 2.

La instrucción IN 3*2

(78)

Instrucción OUT: Salida de Datos

Instrucción: OUT

Bits afectados

Descripción:

OUT PORT pone el contenido del acumulador en el bus de datos de 8 bits del puerto seleccionado. El número de puertos oscila de 0 a 255 y es duplicado en el bus de direcciones. Es la lógica externa la encargada de seleccionar el

puerto y aceptar el dato de salida. El operando (PORT) debe especificar el número del puerto de salida seleccionado.

Ejemplos:

La instrucción OUT 2

Envía el contenido del acumulador al puerto de salida número 2.

La instrucción OUT 3*2

Referencias

Documento similar

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación