Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4...

51
1 1 Asignatura Microprocesadores Asignatura Microprocesadores Gabriel Spano Sazo Gabriel Spano Sazo Ingeniero Ingeniero Electr Electr ó ó nico nico email = email = [email protected] [email protected] Agosto 2008 Agosto 2008

Transcript of Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4...

Page 1: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

11

Asignatura MicroprocesadoresAsignatura Microprocesadores

Gabriel Spano SazoGabriel Spano SazoIngeniero Ingeniero ElectrElectróóniconico

email = email = [email protected]@udec.clAgosto 2008Agosto 2008

Page 2: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

22

Unidad NUnidad N°°44ManipulaciManipulacióón de la Datan de la Data

4.1..1.-- IntroducciIntroduccióónnPuesto que los microprocesadores pueden ser utilizados en una gran variedad de aplicaciones, es necesario ser capaz de representar datos en un microcomputador en un cierto número de formas diferentes. Por ejemplo, en algunas aplicaciones es adecuada una representación binaria sencilla sin signo, pero en otras puede ser ventajoso representar los datos en forma decimal codificados en binario. A continuación se describen primero los diferentes métodos que se usan para la representación de datos de un microcomputador y después introduce algunas instrucciones aritméticas típicas.

4.2..2.-- RepresentaciRepresentacióón de datosn de datosAntes de que consideremos las instrucciones específicas aritméticas, es necesario examinar las diferentes maneras en que un número puede ser representado en un microcomputador.

Page 3: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

33

Normalmente los números se pueden representar en binario sin signo, binario con signo o en codificación en binario (BCD - Binary Coded Decimal).4.2.1.4.2.1.-- Binario sin signoBinario sin signoEl binario sin signo es el más básico y en los microprocesadores, la forma más corriente de representación numérica. En esta representación se supone que todos los números son positivos y que en un byte es sencillamente los 8 bits del número binario equivalente. Damos algunos ejemplos a continuación:De esta manera, el campo numérico (en la forma sin signo) para un microprocesador de 8 bits que use un byte por número es de 0 a 255: los números que exceden de 255 se deberán representar por ello con dos o más byte.

27 26 25 24 23 22 21 20

0 0 1 0 1 0 1 1 = 4310

0 1 0 0 0 1 1 0 = 7010

1 0 1 0 0 0 0 1 = 16110

1 1 0 0 1 1 0 0 = 20410

Page 4: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

44

4.2.2.4.2.2.-- Binario con signoBinario con signoEn algunas aplicaciones es necesario ser capaces de representar tanto los números positivos como los negativos. Esto supone que cuando se hacen operaciones aritméticas con los números es necesario producir el signo correcto en el resultado numérico. Por ello, en la forma numérica con signo de representación se usa, un bit, usualmente el más significativo, para indicar el signo del número.La formas más simple de representación binaria signada es la de signoy magnitud puesto que de esta manera el bit más significativo indica el signo (0 positivo, 1 negativo) y los otros siete la magnitud. Por ejemplo 0 0011010 = + 26

1 1100100 = - 100Desgraciadamente, sin embargo, con esta forma no es posible realizar operaciones aritméticas simples con los números y que se produzca automáticamente el resultado correcto con su signo. Esta es la razón de que se use a menudo el método de representación denominado complemento a dos, pues como se verá mas adelante, realizando las operaciones aritméticas con este método se produce automáticamente

Page 5: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

55

el resultado correcto con su signo.Como se dijo anteriormente, con el método de representación del complemento a dos, se usa el bit más significativo, S, de cada número, para dar su signo:más significativo, (m. s.) menos significativo, (l. s.)

S 6 5 4 3 2 1 0S = 0 para números positivos o ceroS = 1 para números negativosPara los números positivos, los códigos binarios simples se emplean para la representación numérica. Para los números negativos, sin embargo, el número se representa por su complemento a dos. Para obtener el complemento a dos de un número, se le invierte primero (se le complementa) y el resultado numérico se incrementa en una unidad.Por ejemplo:+ 15 = 00001111 → 11110000 → 11110001 = - 15

+ 89 = 01011001 → 10100110 → 10100111 = - 89

Page 6: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

66

Es destacar, después del proceso de complementación, que el bit más significativo se pone automáticamente en 1. de acuerdo con esto, para un microprocesador, el rango de los posibles números de un byte queda resumido en la siguiente tabla.

Tabla de Representación en complemento a dos

Page 7: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

77

Se debe ver que en la tabla, el número máximo positivo que se puede representar es +127 y el máximo negativo -128. Por ello, cuando se realizan operaciones aritméticas con 8 bits complementados a dos como números con signo, es importante no excederse de este campo numérico, pues de otra manera no se obtendrían respuestas correctas. Por ejemplo, (+68) + (+76) = (+144) excede el número máximo posible positivo de 8 bits (+127). De la misma forma, (-68) - (+76) producirátambién un resultado incorrecto, ya que el resultado (-144) es mayor que el posible máximo número negativo (-128).

Page 8: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

88

4.2.3.4.2.3.-- CCóódigo decimal codificado en binario (BCD)digo decimal codificado en binario (BCD)A veces es preferible, en algunas aplicaciones, utilizar números decimales para la representación aritmética con un microcomputador; por ejemplo, si los datos de entrada proceden de un teclado decimal y los subsiguientes datos de salida gobiernan una pantalla decimal. La mayoría de los microcomputadores, por esto, proporcionan instrucciones para realizar las operaciones aritméticas en números decimales codificados en binario (BCD). La representación BCD es un subgrupo del sistema hexadecimal introducido y se resume en la siguiente tabla.

Page 9: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

99

Por su examen se advierte que un número de 8 bits puede ser usado para representar, almacenar dos caracteres en BCD. Por ejemplo: 1000 0110 = 8610

0101 0001 = 5110

Resumiendo, el programador puede escoger una de las tres diferentes formas de representación numéricas citadas. Debería destacarse, sin embargo, que el tipo de representación que esté siendo usado es de muchas maneras transparente para el microprocesador , puesto queéste trata los datos como si fueran en forma de 8 bits en binario y es de la responsabilidad del programador procesar e interpretar estos datos de la forma más adecuada para resolver una tarea determinada.

4.3 Instrucciones Aritm4.3 Instrucciones AritmééticasticasLas instrucciones aritméticas básicas previstas para un microprocesador son: suma, resta, incremento y decremento. En general, con el 8085, estas instrucciones implican siempre el registro A y algún otro registro del procesador o celda de la memoria. Puesto que

Page 10: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1010

los programadores pueden necesitar la interpretación de los datos en el microcomputador de maneras variadas, un microprocesador contieneun cierto número de formas diferentes de estas instrucciones para que los datos puedan ser manipulados de acuerdo con la forma seleccionada. Además, el microprocesador contiene un número de señalizadores, flags (bits de condición o de estado) que son puestos en “set” o en “reset”, dependiendo de la instrucción aritmética particular que se haya llevado a cabo. El programador debe ser capaz de usar e interpretar estos “flags”, señales, indicadores con el objeto de manipular datos de la manera seleccionada por él.Las señales indicadoras formadas por bits, flags, son agrupadas para formar el registro de señalización, F. Como ejemplo el registro de señalización F del 8085.

Page 11: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1111

El registro de señalización F del 8085.

Page 12: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1212

4.3.1.4.3.1.-- Instrucciones de sumaInstrucciones de sumaLa suma de dos bits se resume en la siguiente tabla.La tabla representa que, puesto que la suma solamente puede ser 0 o 1, se puede generar un arrastre que se debe agregar a la pareja de bits del orden más alto e inmediato. Por ello, cuando se sumen dos números binarios, es necesario considerar no sólo cada pareja de bits, sino también el dígito de arrastre que pudiera producir la pareja inmediata del orden inferior.

Page 13: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1313

La tabla representa una tabla de verdad, que resume todas las posibles combinaciones de dos bits y del arrastre que se produce de la suma de los bits de orden inferior.

Por ejemplo: A = 10011010 = 15410

B = 01010111 = 8710 ------------------------- ----------------

A + B = 11110001 = 24110

Todas las instrucciones de Suma del 8085 usan para el direccionamiento o el registro inmediato, o el registro indirecto y afectan todos los bits de señalización.

Page 14: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1414

a) Direccionamiento por registroDireccionamiento por registroEjemplo: ADD Besta instrucción hace que el contenido del registro B sea añadido al contenido del registro A. El resultado se pone en el registro A y el contenido del registro B permanece sin cambios:

(A) ← (A) + (B)Después de la instrucción ADD, los bits de señalización son afectados de la manera siguiente:

S se pone si el resultado es negativo ( el bit m.s. de A es 1 )Z se pone si el resultado es cero ( el contenido de A es 0)AC se pone si hay arrastre del bit 3 ( usado con aritmética BCD )CY se pone si hay arrastre del bit 7 ( en el bit m.s. )P se borra (“reset”)

Page 15: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1515

b) Direccionamiento inmediatob) Direccionamiento inmediatoEjemplo: ADI 0F

Esto hace que el dato inmediato 0F16 se añada, sume, al contenidoactual del registro A:

(A) ← (A) + 0FTodos los indicadores quedan afectados.

c) Direccionamiento por registro indirecto) Direccionamiento por registro indirectoEjemplo: ADD MEsto hace que el contenido de la celda de la memoria cuya dirección contiene los registros H y L, sea sumado al contenido actual del registro A. El resultado se pone en el registro A.

(A) ← (A) + ((H) (L))Todos los bits de señalización quedan afectados.

Page 16: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1616

4.3.2.4.3.2.-- Instrucciones de restaInstrucciones de restaLa resta de dos números binarios es similar a la suma, excepto en que el arrastre es sustituido por lo que se denomina “préstamo”. La substracción de dos bits se resume en la siguiente tabla.

El bit 2 y el préstamo de la diferencia de los 2 bits anteriores son sustraídos del bit 1 para producir la diferencia y si hace falta el préstamo resultante. Por ejemplo:

A = 10011011 = 15510

B = 01010111 = 8710-------------------------------------------------- --------------------

A - B = 01000100 = 6810 ----- 0100 0100 = 4416

Page 17: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1717

Las instrucciones de resta son idénticas a las anteriores instrucciones de suma, excepto en que se lleva a cabo una operación de resta en lugar de la operación suma. Nuevamente, todos los indicadores quedan afectados. Las correspondientes instrucciones de resta para cada uno de los ejemplos anteriores de la suma son:

Suma RestaADD B →→→ SUB BADI 0F →→→ SUI 0FADD M →→→ SUB M

Page 18: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1818

4.3.3.4.3.3.-- Instrucciones de incrementoInstrucciones de incrementoLas instrucciones de incremento usan el direccionamiento por registro indirecto para incrementar el contenido o de un registro procesador o de una celda de la memoria en unidad. Todos los indicadores, excepto el de arrastre, quedan afectados.

a) Direccionamiento por registroa) Direccionamiento por registroEjemplo: INR AHace que el contenido del registro A sea incrementado en una unidad:

(A) ← (A) + 1Además de ser capaz de incrementar el contenido de un solo registro, un cierto número de instrucciones proporciona el incremento del contenido combinado de un par de registros.Por ejemplo: INX HEsto hace que los contenidos combinados del para H y L sean incrementados en una unidad:

(H) (L) ← (H) (L) + 1

Page 19: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

1919

Lo que es particularmente útil cuando hay que tener acceso a una serie de valores desde la memoria.

b) Direccionamiento por registro indirectob) Direccionamiento por registro indirectoEjemplo: INR MEsto hace que el contenido de la celda de la memoria cuya dirección está contenida en los registros H y L sea incrementado en una unidad:

( (H) (L) ) ← ( (H) (L) ) +1

4.3.4.4.3.4.-- Instrucciones de decrementoInstrucciones de decrementoEstas instrucciones son idénticas a las instrucciones de incremento, excepto en que el contenido de los registro(s) del procesador o celda de la memoria se decrementa en una unidad. Las correspondientes instrucciones de decremento son:

Incremento DecrementoINR A →→→ DCR AINX H →→→ DCX HINR M →→→ DCR M

Page 20: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2020

Ejercicio N°1:Desarrollar un programa que utilice como representación numérica la binaria sin signo. Los registros A y B son cargados primero con los datos inmediatos (+53 y +3A respectivamente) y su contenido se suma en conjunto. Un tercer número (8C) es sustraído después del contenido A usando el direccionamiento inmediato y finalmente el nuevo contenido de A se decrementa en una unidad.

Page 21: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2121

Ejercicio N°2:Desarrollar un programa que utilice como representación numérica la binaria con signo. Los registros A y B son cargados primero con los datos inmediatos (+23 y -B8 respectivamente) y su contenido se suma en conjunto. Un tercer número (-DB) es sustraído después del contenido A usando el direccionamiento inmediato y finalmente el nuevo contenido de A se decrementa en una unidad.(Conv. Dec a Hex y Bin) → → http://ific.uv.es/~jgarcian/probe/conversor.html

Page 22: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2222

4.4.4.4.-- MultiprecisiMultiprecisióón, Instrucciones Aritmn, Instrucciones AritmééticasticasAunque 8 bits son suficientes para representar los valores de los datos en la mayoría de las aplicaciones del procesador, algunas necesitan el uso de 16 bits o más bits. La mayoría de los microprocesadores de 8 bits, por la causa citada, proporcionan un cierto número de instrucciones aritméticas de números de más de 8 bits.

4.4.1.4.4.1.-- La aritmLa aritméética de 16 bitstica de 16 bitsEn la Unidad anterior se mencionó que el 8085 proporciona algunas instrucciones de transferencia de datos para cargar 16 bits ( dos bytes ) de datos inmediatos en una par de registros, BC, DE o HL. Existen también instrucciones para el incremento y decremento de la combinación de los contenidos del par de registros y también para realizar la suma de doble longitud ( de 16 bits ).Por ejemplo: INX BEsto hace que la combinación de los registros B y C sea incrementada en una unidad. Ninguna señalización es afectada:

(B) (C) ← (B) (C) + 1

Page 23: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2323

Por ejemplo: DCX DLo que hace que los contenidos combinados de los registros D y E sean decrementados en una unidad. Los indicadores no quedan afectados:

(D) (E) ← (D) (E) + 1Por ejemplo: DAD BEsto hace que el contenido de 16 bits, del par de registros BC, sean sumados a los 16 bits que contiene el par de registros HL. El resultado se coloca en el par de registros HL.

(H) (L) ← (H) (L) + (B) (C)

4.4.2.4.4.2.-- AritmAritméética multiprecisitica multiprecisióón: El sen: El seññalizador de arrastrealizador de arrastreSi se necesitase una precisión mayor de los 16 bits, no se dispone de una instrucción única para realizar las operaciones aritméticas sino que se precisará un cierto número de instrucciones. Por ejemplo: considere la suma de dos números 24 bits ( tres bytes ). Cada número necesitaría de tres celdas de la memoria y también el total de la suma necesitaría tres sumas separadas de 8 bits de la forma que se detalla en la figura.

Page 24: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2424

La figura representa lo que es necesario tener en cuenta: el añadir el bit de arrastre (CY) cuando se suman el segundo y tercer par de bytes. El 8085, por ello, proporcionan instrucciones adicionales de suma y resta, las cuales usan también los bits de arrastre y/o préstamos.Por ejemplo: ADC Mlo que hace que los contenidos de las celdas de la memoria cuyasdirecciones están contenidas en los registros H y L, y los contenidos de señalización CY sean añadidos a los contenidos del registro A. El resultado es situado en el registro A y todos los indicadores quedan afectados:

(A) ← (A) + ( (H) (L) ) + (CY)

Page 25: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2525

Otro ejemplo: SBB MEsta instrucción es igual a la anterior excepto que realiza una operación de sustracción:

(A) ← (A) - ( (H) (L) ) - (CY)

Ejercicio N°1:Desarrolle el programa que sume los números de 24 bits (3 bytes) que se encuentran almacenados en las tres celdas consecutivas de la memoria que parten de la dirección 2080 al número de 24 bits que se encuentran almacenado en las tres celdas de la memoria que parten de la dirección 2083. El resultado de 24 bits reemplaza al primer número.

Page 26: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2626

Programa de Aritmética multiprecisión

Page 27: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2727

4.5.4.5.-- AritmAritméética BCDtica BCDEs ventajoso en algunas aplicaciones de microprocesador representar los números en decimal codificado en binario (BCD). Por ello, la mayorparte de los microprocesadores proporcionan una instrucción, la cual, en unión de las instrucciones aritméticas básicas, permite que se manipulen los datos codificados en binario.Considere la suma de los dos números de dos dígitos BCD:

Ejemplo 1: Número 1 0110 00102 62BCD

Número 2 0010 01012 25BCD

Suma 1000 01112 87BCD

Ejemplo 2: Número 1 0111 10012 79BCD

Número 2 0001 01102 16BCD

Suma Real 1000 11112 815BCD (suma > 9)Suma + 6 0000 01102 06BCD

Suma Correg. 1001 01012 95BCD

Page 28: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2828

Ejemplo 3: Número 1 0011 10012 39BCD

Número 2 0100 10002 48BCD

Suma Real 1000 00012 81BCD (Arrastre auxiliar)

Suma + 6 0000 01102 06BCD

Suma Correg. 1000 01112 87BCD

Ejemplo 4: Número 1 0111 10012 79BCD

Número 2 0001 01012 15BCD

Suma Real 1000 11102 814BCD (suma > 9)Suma + 6 0000 01102 06BCD

Suma Correg. 1001 01002 94BCD

Ejemplo 5: Número 1 0011 10012 39BCD

Número 2 0100 10012 49BCD

Suma Real 1000 00102 82BCD (Arrastre auxiliar)

Suma + 6 0000 01102 06BCD

Suma Correg. 1000 10002 88BCD

Page 29: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

2929

Por ello, el Intel 8085, por ejemplo, proporciona la siguiente instrucción, la cual puede ser utilizada para ajustar automáticamente el resultado producido por una operación binaria normal de suma cuando son manipulados datos codificados en BCD.

DAA (Decimal Adjust Accumulator, Acumulador de ajuste decimal)

Lo que hace que el número de 8 bits del registro A sea ajustado para formar dos dígitos mediante el siguiente procedimiento:1.- Si el valor del grupo menos significativo de 4 bits del registro A es mayor que 0 o si el indicador AC esta “puesto”, se suma 6 al registro A.2.- Si el valor del más significativo de los dígitos, m.s., de 4 bits BCD del Registro A es ahora mayor que 9 o si el indicador CY resulta “puesto”, se añade 6 al grupo m.s. de 4 bits BCD del registro A.

Puesto que ambas mitades del registro A han quedado corregidas ytambién han sido afectados tanto el arrastre (CY) como el arrastre auxiliar (AC), es claramente posible una aritmética de multiprecisión que usa la misma instrucción.

Page 30: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3030

El ejemplo del programa enseña como se suma dos números BCD de 4 bits dígitos (16 bits) y forma la suma correcta y corregida de 4 bits BCD. El primer número queda almacenado en las dos celdas consecutivas de memoria que comienzan en la dirección 2080 y el segundo en las dos celdas que comienzan en la dirección 2082. El resultado reemplaza al primer número.

Page 31: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3131

Se debe también realizar una corrección cuando se efectúa una sustracción de números en BCD, pero debe ser destacado que esta es diferente de la que se requiere para la suma. La corrección puede fácilmente ser deducida a partir de los ejemplos y se resume en lafigura que a continuación se detalla. La tabla representa el estado de los indicadores del arrastre y los contenidos del registro A, después que se ha realizado una operación normal de sustracción (SUB, SUI, DCR).Ejemplo de sustracción:

Ejemplo 1 Número 1 = 0100 0111 = 47BCD

Número 2 = 0011 0010 = 32BCD ( 1-0 = 1 ; 0-1 =1 )Resta = 0001 0101 = 15BCD

Ejemplo 2 Número 1 = 1000 0001 = 81BCD

Número 2 = 0110 1001 = 69BCD

Resta Real = 0001 1000 = 18BCD

Sume FA = 1111 1010 = FA Resta = 0001 0010 = 12BCD

Page 32: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3232

Es importante recordar que:CY = Arrastre desplazado del bit m.s. del registro.AC = Arrastre en la mitad menos significativa del registro.

La instrucción de ajuste decimal de algunos microprocesadores, el Zilog 80, por ejemplo, ejecuta automáticamente la corrección apropiada después de una suma o sustracción, recordando el tipo de operación aritmética realizada antes de que se haga el ajuste decimal. En otros microprocesadores el Intel 8085, por ejemplo, es responsabilidad del programador de su iniciativa determinar y ejecutar la operación apropiada de corrección cuando se realiza una sustracción de número en BCD.

Page 33: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3333

4.6.4.6.-- Operaciones LOperaciones LóógicasgicasTanto en éste como en las unidades anteriores, se ha asumido que los datos que hay en el microprocesador siempre representan un valornumérico. En muchas aplicaciones, sin embargo, los datos pueden indicar simplemente el estado, por ejemplo, de un sistema controlado. Es decir: un solo dígito binario puede indicar el estado de una válvula de control: 0 = válvula abierta, 1 = válvula cerrada. Así, el valor de los 8 bits en binario 01100111 puede significar que el control de las válvulas 1, 2, 3, 6 y 7 se encuentren cerradas mientras que el control de las válvulas 4, 5 y 8 se encuentren abiertas. Además de las instrucciones aritméticas ya introducidas, un microprocesador tiene disponibles un cierto número de instrucciones de manipulación de datos, que se encuentran principalmente incluidas para la manipulación de datos que no son numéricos. Estas son las denominadas instrucciones lógicas. Se considerarán ahora algunos ejemplos de las mismas.

Page 34: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3434

4.6.1.4.6.1.-- AND y lAND y lóógicogicoLas instrucciones lógicas del tipo AND realizan la operación AND bit a bit entre los contenidos del registro A y otro dato inmediato o los contenidos de algún otro registro del procesador o celda de la memoria. La tabla de verdad de la función AND se muestra a continuación. Una aplicación típica de esta instrucción es la de comprobar el estado de un bit especificado de un grupo, por ejemplo de 8 bits.

Ejemplo: ANI 40Esto hace que se origine la operación lógica AND, realizada bit a bit entre los contenidos del registro A y el de datos inmediatos 40 (hex).El resultado se pone en el registro A:

(A) ← (A) AND 40

Page 35: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3535

Por ejemplo:(A) = 0110 010040 = 0100 0000

(A) AND 40 = 0100 0000Así, si el bit 7 de A fuese el 1 lógico, los nuevos contenidos de A no serían 0. Inversamente, si el bit 7 de A fuese 0 lógico, el nuevo contenido de A sería 0.Todas las instrucciones lógicas afectan a la paridad de la P. Si el número de 1 (unos) en el resultado fuese impar, P es borrado (0). Si el número de 1 (unos) es par, P es puesto (1). Por ello, en el ejemplo anterior, P es impar por lo tanto P se borra.

Page 36: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3636

4.6.2.4.6.2.-- OR lOR lóógicogicoLas instrucciones de OR lógico son similares a las del AND, excepto en el caso de que la operación realizada bit a bit sea un OR. La tabla de verdad de la función OR se da a continuación:

ORA B Los contenidos del registro A son OR, se les aplica la función lógica OR, con los contenidos del registro B. El resultado se coloca en el registro A.

(A) ← (A) OR BEjemplo:

(A) = 0110 0100(B) = 1001 0101

(A) OR (B) = 1111 0101 ; P es puesto (par)

Page 37: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3737

4.6.3.4.6.3.-- OROR-- exclusivo (XOR)exclusivo (XOR)La operación de OR exclusivo, difiere de la normal de OR lógico en que cuando ambos bits son 1 (unos) lógicos, el resultado es 0. La tabla de verdad para función OR exclusivo se muestra a continuación. El rango de las instrucciones de XOR es similar a las de las instrucciones OR y se usan ampliamente, por ejemplo, en la detección y corrección de errores que pudieran presentarse al transmitir información binaria. Ejemplo: XRA MEsto hace que se realice la operación de OR exclusivo bit a bit entre los contenidos del registro A y la celda de la memoria cuyas direcciones quedan contenidas en los registros H y L. El resultado coloca en el registro A.

(A) ← (A) XOR ((H) (L))Ejemplo:

(A) = 1001 1011((H) (L)) = 1100 1101

(A) XOR ((H) (L)) = 0101 0110 ; P es puesto (par)

Page 38: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3838

4.6.4.4.6.4.-- ROTATE rotaciROTATE rotacióónnLos tipos de las tres instrucciones previas del tipo lógico: AND, OR y XOR, realizadas por operaciones lógicas bit a bit entre dos formas binarias de ocho bits, pueden ser completadas, además, con el grupo de instrucciones lógicas que mandan girar, rotate, desplazarse a un valor binario hacia la izquierda o hacia la derecha en un lugar. Esto es útil, por ejemplo, cuando se realizan multiplicaciones y divisiones binarias: un desplazamiento a la izquierda multiplica por dos y uno a la derecha divide por dos al número contenido en el registro. Ejemplo: RLCEl contenido el registro A se desplaza en un lugar hacia la izquierda. El bit menos significativo y el indicador de arrastre se ponen ambos con el valor de la posición del bit más significativo que se desplaza hacia fuera. Esto se muestra en la figura adjunta.

Page 39: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

3939

4.6.5.4.6.5.-- CompararCompararLa instrucción comparar, compare, es a menudo útil. Hace que se comparen dos valores los contenidos del registro A y o datos inmediatos o los contenidos en un registro del procesador o celda de la memoria sin modificación de ninguno de los valores. El resultado de la comparación afecta los indicadores como se demuestra en la siguiente unidad. Estos pueden ser probados para determinar la próxima operación que se ha de ejecutar.Ejemplo: CMP BLos contenidos del registro B son comparados con los contenidos del registro A. El bit de señalización Z es puesto a 1 si los contenidos son iguales: el bit de señalización es puesto en 1 si los contenidos de A son menores que los contenidos de B.

Page 40: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4040

Ejemplo de Operaciones LEjemplo de Operaciones LóógicasgicasEl ejemplo de programa que se detalla a continuación hace que los datos inmediatos se carguen primero en los registros A y B entonces se realizan una serie de operaciones lógicas. Primero se comparan los contenidos de A y B, después se hace girar hacia la izquierda el contenido de A; el nuevo contenido de A se somete a una operación AND con una constante y finalmente el contenido que resulte de A es sometido a una operación OR con el contenido de B.

Page 41: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4141

4.7.4.7.-- EjerciciosEjercicios1.- Deduzca los números equivalentes decimales de las siguientes formas binarias de 8 bits e interprételos sucesivamente como binarios sin signo, binarios con signo en complemento a dos y como representación decimal codificada en binario.

Binario Binario sin signo Complem. a dos BCD0110 1001 105 +105 690010 1000 40 + 40 280111 0110 118 +118 761000 1000 136 -120 881001 0011 147 -109 931000 0111 135 -121 87

Recuerdo de complemento a dos ( invertir + 00000001).10001000 01110111 01111000 = 8 + 16 + 32 + 64 = -12010010011 01101100 01101101 = 1 + 4 + 8 + 32 + 64 = -10910000111 01111000 01111001 = 1 + 8 + 16 + 32 + 64 = -121

Page 42: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4242

2.- Realice las siguientes operaciones aritméticas, utilizando la representación binaria sin signo.a) 103 + 27 = 13010

10310 = 011001112

2710 = 000110112

Suma = 100000102

b) 67 + 118 = 18510

6710 = 010000112

11810 = 011101102

Suma = 101110012

c) 105 – 94 = 1110 d) 56 – 19 = 3710

10510 = 011010012

9410 = 010111102

Resta = 000010112 ; se puede hacer con 1110

3710 = 001001012

Page 43: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4343

3.- Realice las siguientes operaciones aritméticas, utilizando la representación binaria con signo y complemento a dos.

a) –105 + 94 = -1110

+10510 = 011010012

-10510 = 100101102 + 000000012

-10510 = 100101112

+9410 = 010111102

Suma = 111101012 = -1110

Comprobación+1110 = 000010112

-1110 = 111101002 + 000000012 = 111101012

Page 44: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4444

b) –56 + 19 = - 3710

+5610 = 001110002

-5610 = 110001112 + 000000012

-5610 = 110010002

+1910 = 000100112

Suma = 110110112 = -3710

Comprobación-3710 = 110110112

= 001001002 + 000000012

= 001001012 = 1●20 + 1●22 + 1●25 = 1 + 4 + 32 = 3710

otra forma es;+3710 = 001001012

-3710 = 110110102 + 000000012 = 110110112

Page 45: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4545

c) +103 – 27 = +7610

+10310 = 011001112

+2710 = 000110112

Resta = 010011002 = +7610

d)+67 – 118 = -118 + 67 = - 5110

+11810 = 011101102

-11810 = 100010012 + 000000012 = 100010102

-11810 = 100010102

+6710 = 010000112

Suma = 110011012 = -5110

Comprobación+5110 = 001100112

-5110 = 110011002 + 000000012 = 110011012

Page 46: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4646

4.- Efectúe las siguientes operaciones aritméticas usando la representación numérica BCD. Primero realice la operación binaria normal de suma/resta y después añada las correcciones.

a) 34 + 52 = +8610

+3410 = 0011 0100BCD

+5210 = 0101 0010BCD

Suma = 1000 0110BCD = 8610 ; como ( CY → 0 y AC → 0) no hay corrección.

b) 19 + 27 = +4610

+1910 = 0001 1001BCD

+2710 = 0010 0111BCD

Suma = 0100 0000BCD ; como ( CY → 0 y AC → 1) se debe corregir.

Corr. = 0000 0110BCD ; se suma 0006 a los bits menos significativos.

Sum C. = 0100 0110BCD = 46 10

Page 47: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4747

c) 75 - 42 = +3310

+7510 = 0111 0101BCD

+4210 = 0100 0010BCD

Resta = 0011 0011BCD = 3310 ; como ( CY → 0 y AC → 0 ) no hay corrección

d) 81 - 39 = +4210

+8110 = 1000 0001BCD

+3910 = 0011 1001BCD

Resta = 0100 1000BCD = 4810 ; como ( CY → 0 y AC → 1 ) hay corrección

Corr. = 1111 1010BCD ; se suma FA.

Sum C.= 0100 0010BCD = 42 10

Page 48: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4848

5.- Determine el número que se encontrará en el registro A, después de que se hayan ejecutado las instrucciones que siguen, secuencialmente.

MVI A, 13ADI 41DAA

MVI A, 13 (A) ← 0001 0011ADI 41 (A) ← 0001 0011 + 0100 0001 = 0101 0100DAA (A) ← 0101 0100BCD = 5410

6.- Escriba un programa en lenguaje ensamblador para realizar las siguientes operaciones aritméticas usando la representación numérica con signo y el complemento a dos. -56 +(-27) 5610 = 001110002 , 2710 = 000110112 ⇒ -5610 = 110010002 , -2710= 111001012

por lo tanto:MVI A, C8 ya que -5610 = 110010002 = 12/816 = C816

ADI E5 ya que -2710 = 111001012 = 14/516 = E516

entonces la suma da 101011012

Page 49: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

4949

comprobación de que 101011012 = - 8310

+8310 = 010100112

-8310 = 101011002 + 000000012 = 101011012

7.- Determine el resultado de realizar las operaciones lógicas AND, OR y XOR en los siguientes pares de bytes:

(AE, 14) ; (2B, 8F) ; (37, 48) ; (A5, 5A)

A, B (10) A, B (2) A AND B A OR B A XOR B

A = AE A = 1010 1110 B = 14 B = 0001 0100

A = 2B A = 0010 1011 B = 8F B = 1000 1111

A = 37 A = 0011 0111B = 48 B = 0100 1000

A = A5 A = 1010 0101B = 5A B = 0101 1010

0111 1111 0111 1111

1111 1111 1111 1111

1011 1110 1011 1010

1010 1111 1010 0100

0000 0100

0000 1011

0000 0000

0000 000

Page 50: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

5050

8.- Determine el número que hay en el registro A y el estado de los indicadores del arrastre y de los de paridad después de la realización de cada una de las instrucciones en la siguiente secuencia:MVI A, 9EMVI B, A4RLCANI C2ORA B

MVI A, 9E (A) 1001 1110 CY, P no afectado MVI B, A4 (B) 1010 0100 CY, P no afectadoRLC (A) 0011 1101 CY ← 1, P no afectado

el reg. A se desplaza un lugar a la izquierda ANI C2 (A) AND C2 CY ← 0, P ← 1

0011 1101 AND 1100 0010 = 0000 0000ORA B (A) OR B CY ← 0, P ← 0

0000 0000 OR 1010 0100 = 1010 0100Registro A = 1010 0100.

Page 51: Asignatura Microprocesadoresgspano/Lab de Microprocesadores IPVG 2008/Unidad 4.pdf · 2 Unidad N°4 Manipulación de la Data 4.1.- Introducción Puesto que los microprocesadores pueden

5151

FINFIN