1.2 sistema numérico posicional (binario)dea.unsj.edu.ar/mp1/apuntes/catedra aritmetica...

50
MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 1 ARITMÉTICA BINARIA 1.1 Introducción Las últimas máquinas estudiadas, poseen la propiedad del tratamiento en paralelo de varios bits. Según cada máquina, serán: 4, 8, 16,32 etc. A estos conjuntos de bits lo llamamos ¨palabra¨. Si la palabra es de 8 bits, se la denomina byte. Esta palabra puede representar entre otras cosas, datos, y estos datos pueden ser, alfabéticos, numéricos, etc. En esta ocasión nos referiremos a los datos numéricos, las diversas formas de representación, y sus características, etc. 1.2 Sistema Numérico Posicional (binario) Como sabemos todas las computadoras digitales, poseen la característica de reconocer internamente, solo dos valores como válidos, para todas sus funciones, ellos son ¨0¨y ¨1´; debido a que el sistema binario es el sistema mas fácilmente implementable en los sistemas digitales. Este sistema binario pertenece al conjunto de los sistemas numéricos posicionales, como lo es el decimal pues el valor que representa un dígito depende del lugar en que se encuentren dentro del número. En esta forma de representación, el número es representado como un vector de n bits (o dígitos). Asociado con cada sistema numérico está la raíz o base B. En el sistema binario donde la base B=2 el valor de los dígitos será 0 ó 1. Consideremos un vector de n bits de la forma: N = a n-1 a n-2 a n-3 ..... a 1 a 0 (1.1) Donde: n = números de bits que representan a N a i = 0 ó 1 para 0 i n-1 Este vector puede representar valores enteros positivos V según V = a n-1 * 2 n-1 + ...... + a 2 * 2 2 + a 1 * 2 1 + a 0 * 2 0 (1.2) Así el valor de N, el cual es indicado normalmente como |N|, puede tener la siguiente representación: n-1 N = a i B i (1.3) i=0 Para los valores extremos:

Upload: dinhnhi

Post on 16-Feb-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 1

ARITMÉTICA BINARIA

1.1 Introducción

Las últimas máquinas estudiadas, poseen la propiedad del tratamiento en paralelo de varios bits. Según

cada máquina, serán: 4, 8, 16,32 etc. A estos conjuntos de bits lo llamamos ¨palabra¨. Si la palabra es de 8

bits, se la denomina byte.

Esta palabra puede representar entre otras cosas, datos, y estos datos pueden ser, alfabéticos, numéricos,

etc. En esta ocasión nos referiremos a los datos numéricos, las diversas formas de representación, y sus

características, etc.

1.2 Sistema Numérico Posicional (binario)

Como sabemos todas las computadoras digitales, poseen la característica de reconocer internamente, solo

dos valores como válidos, para todas sus funciones, ellos son ¨0¨y ¨1´; debido a que el sistema binario es

el sistema mas fácilmente implementable en los sistemas digitales. Este sistema binario pertenece al

conjunto de los sistemas numéricos posicionales, como lo es el decimal pues el valor que representa un

dígito depende del lugar en que se encuentren dentro del número.

En esta forma de representación, el número es representado como un vector de n bits (o dígitos). Asociado

con cada sistema numérico está la raíz o base B. En el sistema binario donde la base B=2 el valor de los

dígitos será 0 ó 1.

Consideremos un vector de n bits de la forma:

N = an-1 an-2 an-3 ..... a1 a0 (1.1)

Donde: n = números de bits que representan a N

ai = 0 ó 1 para 0 ≤ i ≤ n-1

Este vector puede representar valores enteros positivos V según

V = an-1 * 2n-1 + ...... + a2 * 22 + a1 * 21 + a0 * 20 (1.2)

Así el valor de N, el cual es indicado normalmente como |N|, puede tener la siguiente representación:

n-1

N = ∑ ai Bi (1.3)

i=0

Para los valores extremos:

Page 2: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 2

Nmin = a0 B0 = 0*20 = 0 = Nmin

n-1

Nmax = ∑ 2i = 20 + 21 + 22 + . . . . 2n-1 = 2n - 1 (1.4)

i=0

La anterior representación (1.3) es para números enteros positivos, pero puede también extenderse para

permitir representar números fraccionarios, por ejemplo:

N = an-1 * 2n-1 + . . . . +a1 * 21 + a0 * 20 + a-1 * 2-1 + a-2 * 2-2 + . . . + a-m * 2-m (1.5)

Donde m es la cantidad de bits utilizados para representar la parte fraccionaria, ejemplo.

110011,1011

1.25 + 1.24 + 0.23 + 0.22 + 1.21 + 1.20 + 1.2-1 + 0.2-2 + 1.2-3 + 1.2-4 = 51,6875

1.3 Representación Binaria, Octal y Hexadecimal

Otras bases posibles de ser utilizadas en computadoras digitales para la representación numérica son:

Octal: cuyos símbolos son 0, 1, 2, 3, 4, 5, 6, 7

Hexadecimal: cuyos símbolos son 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

En este último caso los símbolos A-F son convenidos para la representación de los valores 10-15, en un

solo dígito.

La generalidad de las computadoras utilizan la base 2 (binaria) a pesar de la incomodidad que representa

el transferir los resultados a valores en decimal, sin embargo, la facilidad en las operaciones suma, resta,

etc. , justifica ampliamente su utilización.

Observando las siguientes relaciones:

23 =8 ; 24 =16

vemos que cada dígito octal, corresponde a 3 binarios, y cada dígito hexadecimal a 4 binarios. Por lo tanto

la conversión de binario a octal y a hexadecimal se hace fácilmente dividiendo en grupos de 3 ó 4 bits

respectivamente.

0 2 5 1 3 4_ Octal

Page 3: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 3

0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 Binario 2 A 5 C Hexadecimal

Fig. 1.1

En la tabla 1.1 se observan las equivalencias entre los códigos mas comunes en sistemas digitales.

1.4 Representación Números Enteros

Uno de los principales requerimientos en el trabajo con datos numéricos es que exista la posibilidad de

que los números puedan ser distinguidos en positivos y negativos. Para ello existen 3 sistemas de

representación, a saber:

a) Signo y Módulo

b) Complemento a 1 (o complemento a la base disminuida)

c) Complemento a 2 (o complemento a la base o complemento verdadero)

Decimal Binario Octal Hexa

00 0000 00 0

01 0001 01 1

02 0010 02 2

03 0011 03 3

04 0100 04 4

05 0101 05 5

06 0110 06 6

07 0111 07 7

08 1000 10 8

09 1001 11 9

10 1010 12 A

11 1011 13 B

12 1100 14 C

13 1101 15 D

14 1110 16 E

15 1111 17 F

16 1000 20 10

Tabla 1.1 Equivalencia de códigos

1.4.a Sistema de Representación, signo y módulo

Page 4: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 4

En esta representación del total de bits disponibles para la codificación del número, se considera un bit,

por convención, el mas significativo, como bit de signo. El valor 0 de este bit, significará que el resto de

los bits representan a un número positivo. En el caso de ser 1 implica número negativo. De mas está decir

que en este caso se ve disminuido el rango de representación con respecto a los números sin signo, ya que

se dispone de un bit menos para la representación. Así

Rango N° sin signo 0 ≤ N ≤ 2n -1

Rango N°positivos (sig. y mod) 0 ≤ N ≤ 2n-1 -1

Rango N° negativos (sig. y mod) 0 ≥ N ≥ -(2n-1 -1) (1.6)

Ejemplos:

para 4 bits para 8 bits

-7 ≤ N ≤ 7 -127 ≤ N ≤ 127

5 = 0101 7 = 0111 25 = 00011001

-5 = 1101 1 = 0001 -25 = 10011001

-7 = 1111 -1 = 1001 -1 = 10000001

1.4.a.1 Ventajas

Se dispone de un método para representar números positivos y negativos muy simple. El análisis del valor

del signo es fácilmente implementable ya sea por hardware o por software.

1.4.a.2 Desventajas

Se presenta el caso de la dualidad en la codificación del cero:

+0 = 0000 0000 -0 = 1000 0000

Además en caso de operaciones aritméticas con números de distinto signo, las magnitudes deben ser

comparadas por separado para determinar el signo del resultado. Este sistema es rara vez utilizado.

1.4.b Sistema de Representación Complemento a 1

Page 5: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 5

Para los números positivos la codificación es exactamente igual que para el método anterior.

N = 0 an-2 an-3 . . . a1 a0 (1.7)

Para los negativos se aplica la siguiente definición:

C1 (N) = 2n - 1 - N (1.8)

Donde n es el número de bits utilizado para la codificación del número N.

Apliquemos la definición a un número cualquiera representado en 8 bits:

N = 12 00001100

N = -12 = C1 (12) = 2n - 1 - N = 28 - 1 - N =

= 100000000 - 1 - 00001100 = 11111111 - 00001100 = 11110011 = C1 (12)

Observando el resultado obtenido y repitiendo varios ejemplos concluimos que, la forma rápida de

obtener el complemento a 1 de un número cualquiera es complementar bit a bit sus dígitos.

El campo de representación para este complemento será:

-(2(n-1) - 1) ≤ N ≤ 2(n-1) - 1 (1.9)

para 8 bits tendremos:

-2(8-1) + 1 ≤ N ≤ 2(8-1) - 1

-128 + 1 ≤ N ≤ 128 - 1

-127 ≤ N ≤ 127

Aplicando la definición o el método práctico de obtener este complemento al número cero, obtenemos:

0 = 00000000

-0 = C1 (0) = 11111111

1.4.b.1 Ventajas

Desde el punto de vista digital, fácilmente implementable, para la obtención del complemento.

El bit de signo, a diferencia del método anterior, forma parte del número, tiene asignado un cierto peso,

que en este caso es -(2n-1-1). Esto permite una simplificación en las operaciones aritméticas.

1.4.b.2 Desventajas

Page 6: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 6

Persiste la dualidad en la representación del cero. En caso de operaciones aritméticas el transporte juega

un rol muy importante, y su consideración varía en cada caso.

1.4.c. Sistema de Representación Complemento a 2

Al igual que en los métodos anteriores, la representación para los positivos es la misma, o sea

N = 0 an-2 an-3 . . . a1 a0

Para los negativos se aplica la siguiente definición

C2 (N) = 2n - N (1.11)

Donde n es el número de bits utilizado para representar a N.

Observando las definiciones (1.11) y (1.8) concluimos que:

C1(N) = C2 (N) -1 o sea C1 (N) + 1 = C2 (N) (1.12)

Aplicando la definición (1.11) para el ejemplo en 8 bits, obtenemos:

N = 12 = 00001100

-12 = C2 (12) = 28 - 12 = 100000000 - 00001100 = 11110100

Aplicando (1.12)

C2 (12) = C1 (12) + 1 = 11110011 + 1 = 11110100 c.q.d.

De tal manera se obtiene una forma rápida y eficiente para obtener el complemento a 2 de un número

cualquiera.

El rango de representación es:

- (2(n-1) ) ≤ N ≤ 2(n-1) - 1 (1.13)

para 8 bits

- 128 ≤ N ≤ 127

Esto queda claramente demostrado cuando se analiza la representación del 0, ya que es única para los

casos positivos y negativos, dejando, por lo tanto, una combinación libre que es utilizada para ampliar el

rango de representación de los números negativos.

Page 7: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 7

Ejemplo:

0 = 0000 0000 C2 (0) = 1 0000 0000 - 0000 0000 = 0000 0000

Ejemplos para 8 bits.

127 = 0111 1111 Tener en cuenta que es ilícito la operación en 8 bits, de

1 = 0000 0001 complemento a 2 de -128 ya que el +128 no tiene posibilidad

0 = 0000 0000 de representación en 8 bits.

-1 = 1111 1111

-127 = 1000 0001

-128 = 1000 0000

1.4.c.1. Ventajas

Al igual que en el complemento a 1, el bit de signo tiene peso dentro del número, por lo tanto en las

operaciones aritméticas no hay que hacer diferencia entre las operaciones realizadas con operandos

positivos y negativos.

En complemento a 2 el peso es -2n-1 (1.14)

En ambos casos (C1 y C2) el peso del bit de signo es el valor del mínimo número representable.

Se aumentó el rango de representación al unificarse la codificación del cero.

Las operaciones aritméticas se ven simplificadas al perder importancia el bit de transporte, el cual se

desprecia para todas las operaciones en simple precisión.

1.4.c.2. Desventajas

Se complica con respecto al complemento a 1, la operación de complementación, ya que no es directa

como en ese caso.

Para solucionar esta dificultad prácticamente se aplica la fórmula (1.12) C2 = C1 + 1.

1.4.c.3. Método Práctico

Page 8: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 8

Existe una forma de encontrar prácticamente el complemento a 2 de un número cualquiera. Los pasos a

seguir son:

a) Se observan los dígitos binarios de derecha a izquierda.

b) Los ceros quedan como ceros, hasta la aparición del primer uno.

c) Este queda como está, y de ahí en mas se complementa bit a bit, todos los dígitos restantes.

Ejemplo:

0 1 0 0 1 1 0 0

a) ⇐

b) 0 0

c) 1 0 1 1 01 0 0

Si aplicamos el método de (1.12)

N = 0100 1100 ⇒ C1 (N) = 1011 0011 ⇒ C1 + 1 = 1011 0100 c.q.d.

Una extensión a este método es aplicable al Sistema Hexadecimal para lo cual se procede de la siguiente

manera:

Para obtener el complemento a 1 (C1) :

Se complementa a F16 (1510) cada uno de los dígitos hexadecimales

que forman el número.

Ejemplo:

C1 (7A53) = 85AC

Para obtener el complemento a 2 (C2):

Se debe complementar a la base (1610) el dígito

menos significativo distinto de cero, sin modificar los ceros a la derecha de este; y a F16 (1510) los dígitos

restantes.

Ejemplo:

C2(7A53) = 85AD

C2(3BE0) = C420

1.5 OPERACIONES ARITMÉTICAS:

Page 9: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 9

La suma es la operación matemática básica; en base ha ella se puede realizar cualquier

otra operación. En el caso concreto de una resta, restar el número positivo B del número positivo A, es

equivalente a sumar al número A el número -B.

Por tanto, si se realiza una representación adecuada de los datos negativos, la resta puede ser convertida

en una suma.

A - B = A + ( - B )

en caso de que B < 0 :

A - ( - B ) = A + B

En el tema 1.2.1 se estudiaron las distintas maneras de representar números negativos.

Para las operaciones de aritmética binaria se hará uso de los Sistemas de Representación de Complemento

a la base (C2) y Complemento a la base menos uno (C1). Estos Sistemas se usan en base a las ventajas

que tienen en la representación de números negativos.

Se demuestra a continuación que representando a -B como el complemento de B se

pueden realizar operaciones matemáticas correctamente; para ello se analizan los distintos casos que se

presentan tanto para Complemento a la Base, como en Complemento a la base menos uno.

La importancia de este tema radica en el uso de la Aritmética Binaria en la

programación de los Microprocesadores.

1.5.1 DISTINTOS CASOS EN SISTEMA DE REPRESENTACIÓN

EN COMPLEMENTO A UNO.

1.5.1.a. Los dos operandos positivos, resultado de la operación positivo. Es decir:

A > 0 ; B > 0 ; (A + B) > 0

Ejemplo:

20 0001 0100 A

+ + +

15 0000 1111 B .

35 0010 0011 A+B

De esta forma se concluye que el resultado es el correcto.

1.5.1.b. Uno de los operandos es negativo, resultado de la operación positiva:

A > 0 ; B < 0 ; (A + B) > 0

Page 10: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 10

A + B = A + B + (2n - 1) - (2n - 1)

= A + B + 2n - 1 - 2n + 1

= A - (-B) + 2n - 1 - 2n + 1

pero como B es negativo, entonces:

- B = B (módulo de B)

por lo que reemplazando:

A + B + 2n = A - (-B) + 2n - 1 + 1 = A + 2n - 1 - (-B) + 1

siendo:

2n - 1 - (-B) = C1 (B)

Reemplazando:

A + B + 2n = A + C1 (B) + 1

Donde 2n representa el transporte generado

Se concluye que: en el caso de suma de dos números, expresados en Sistema de

Representación en Complemento a uno, siendo uno de ellos < 0 ,y la suma obtenida > 0 , para que el

resultado sea el correcto hay que sumarle al valor suma obtenido el transporte generado, éste se

denomina "end around carry".

1.5.1.c CASO EN QUE UNO DE LOS SUMANDOS ES NEGATIVO Y LA SUMA

OBTENIDA ES MENOR QUE CERO:

A > 0 ; B < 0 ; ( A + B ) < 0

A + B = A + B + (2n - 1) - (2n - 1)

A + B + (2n - 1) = A - (-B) + (2n - 1)

Page 11: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 11

2n - 1 - (-(A + B) = A + 2n - 1 - (-B)

Reemplazando:

C1 (A + B) = A + C1 (B)

Se concluye que el resultado obtenido se encuentra expresado en Complemento a Uno, y

no es necesario realizar corrección, ya que no produce acarreo.

1.5.1.d CASO EN QUE AMBOS OPERANDOS SON MENORES QUE CERO:

A < 0 ; B < 0 ; ( A + B ) < 0

A + B = A + B

( A + B )+ 2n - 1 - 2n - 1 = ( A + B ) + 2n - 1 - 2n - 1

2n - 1 - (-( A + B )) = 2n - 1 -( -A )+ 2n - 1 -(-B ) - 2n +1

C1 (A + B) = C1 (A) + C1 (B) - 2 n +1

C1 (A + B) + 2n = C1 (A) + C1 (B) + 1

El término +2n que aparece en la última expresión es el transporte generado (carry).

De acuerdo al resultado obtenido se concluye que:

en el caso de suma de dos números, expresados en Sistema de Representación en Complemento a Uno,

siendo ambos < 0 , para que el resultado sea el correcto hay que sumarle al valor suma obtenido el

transporte generado . El resultado es un número negativo y está expresado en el Sistema de

Representación en Complemento a Uno.

1.5.1.e CONCLUSIONES

De acuerdo a las operaciones que se han planteado se observa que si bien es muy fácil la

obtención del Complemento a Uno de un número binario, se debe tener mucho cuidado cuando se usa éste

Page 12: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 12

Sistema de Representación para la realización de operaciones aritméticas, pues es necesario realizar

correcciones, en algunos casos, en los resultados obtenidos; es decir se debe tener en cuenta el acarreo

(transporte) producido. Esto complica el algoritmo ya que el programador deberá tener en cuenta en que

caso se esta y de acuerdo a ello actuar.

1.5.2. DISTINTOS CASOS EN SISTEMA DE REPRESENTACIÓN

EN COMPLEMENTO A DOS.

1.5.2.a. CASO EN QUE LOS DOS OPERANDOS SON POSITIVOS

A > 0 ; B > 0 ; ( A + B ) > 0

Debido a que los números positivos tienen la misma representación que en el caso de

Sistema de Representación en Complemento a Uno, la suma de dos números positivos no tiene diferencia

a la ya vista en 1.2.2.a.

1.5.2.b. CASO EN QUE UN SUMANDO ES NEGATIVO Y EL RESULTADO DE

LA SUMA ES POSITIVO

A > 0 ; B < 0 ; ( A + B ) > 0

( A + B ) + 2n = A + C2 (B)

Al realizar la operación en Sistema de Representación en Complemento a Dos, se genera

un transporte, pero éste se desprecia, ya que no interviene en el resultado obtenido.

1.5.2.c. CASO EN QUE UN SUMANDO ES NEGATIVO Y SUMA NEGATIVA

A > 0 ; B < 0 ; ( A + B ) < 0

C2 ( A+ B ) = A + C2 ( B )

El resultado obtenido está en Complemento a 2 por ser una expresión negativa.

1.5.2.d. CASO EN QUE AMBOS SUMANDOS SON NEGATIVOS

A < 0 ; B < 0 ; ( A + B ) < 0

2n + C2 (A + B) = C2 ( A )+ C2 ( B )

Page 13: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 13

Al igual que el caso anterior, se obtiene directamente el resultado independientemente

de la generación de transporte (carry).

1.5.2.e. CONCLUSIONES

De acuerdo a las operaciones planteadas, se concluye que: cualquiera sea la operación

suma que se realice en Complemento a dos, el resultado obtenido es directamente el correcto,

independientemente del valor del transporte producido.

Esta conclusión es muy importante debido sobre todo a la uniformidad en los distintos

casos de operaciones, sobre todo muy conveniente como base de operaciones en el uso de

microcomputadores, a pesar que la obtención del Complemento a dos no es directo ( de éste modo se evita

la corrección o no del resultado obtenido ).

1.6 La Aritmética Binaria en Microprocesadores

La mayoría de los microprocesadores poseen dentro de su repertorio básico de instrucciones, diversas

instrucciones que le permiten realizar operaciones aritmética y lógicas. Entre las aritméticas como mínimo

se encuentra: la suma y la complementación a 1 (por coincidir con la complementación binaria), y en

algunos casos la resta y/o la complementación a 2. En las máquinas de 16 y 32 bits de longitud de palabra

el repertorio incluye instrucciones de multiplicación y división.

Quiere decir que para la realización del resto de las operaciones aritméticas el programador se debe basar

en la suma.

Ejemplo:

Resta: Suma con distinto signo

Multi: Sumas sucesivas

Divis: restas sucesivas

Poten: Multiplicaciones sucesivas

Radic: Método aproximado

Por lo tanto todas las máquinas disponen de la instrucción suma expresadas de la siguiente forma

genérica:

SUM = A + B + Cy (1.22)

Donde A y B son generalmente lugares e memoria y/o registros con 8 bits de capacidad; y Cy significa

transporte (carry) y es sumado al bit menos significativo. Dependerá del programador, y del programa en

sí, el valor que inicialmente deba adoptar el carry.

Page 14: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 14

Si se está trabajando exclusivamente con datos en Complemento a 1, habrá que analizar cada caso de los

anteriores vistos.

En caso de trabajar con Complemento a 2, siempre el Cy inicial es cero. La otra opción es que uno esté en

S.R.C.1, y el otro en S.R.C.2. Si en este caso ambos son negativos, habrá que convertir al dato expresado

en complemento a 1 en la misma operación de suma de la siguiente manera:

C1 + 1 = C2 ⇒ Cy = 1

Conclusión

Se recomienda la utilización del Complemento a 2 para todas las operaciones y en el caso de que se deba

utilizar la complementación a 1 para convertir a (-), inmediatamente pasar a Complemento a 2, (si el dato

va a ser almacenado) y si se va a operar, convertir mediante Cy = 1 en la suma.

C2 (A + B) = C2 (A) + C1 (B) + 1 (1.23)

C1 (A + B) = C1 (A) + C1 (B) + 1 (1.24)

C2 (A + B) = C1 (A + B) + 1 (1.25)

Tener en cuenta que para pasar a complemento a 2 una operación de 2 números expresado en C1 y ambos

son negativos no se puede hacer en un solo paso, pues en (1.24) se obtiene el resultado de la suma en

complemento a 1, y recién en (1.25) se transforma en C2.

1.7 Valoración de Resultados Negativos

De las operaciones hasta ahora planteadas, tanto el complemento a 1 como el complemento a 2, vimos

que, si el resultado obtenido era < 0, en todos los casos, este resultado, estaba expresado en la forma

complementada del sistema que se trate. Si este valor será utilizado para operaciones sucesivas, pasa a la

siguiente operación tal cual está. Ahora bien, si de alguna manera el operador desea valorar, o tener una

idea del resultado, existen dos métodos para obtener el valor absoluto de la cantidad obtenida, y así poder

aplicar el método de transformación a números decimales que el operador domina. A saber:

1.7.1.a. Aplicar el complemento del resultado para llevarlo a su expresión positiva

1.7.1.a.1 Aplicar la fórmula del siguiente desarrollo:

Un número negativo N°1 = an-1, an-2, . . . , a1, a0

podemos también indicarlo como

n-2

Page 15: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 15

N°1 = an-1* 2n-1 + ∑ ai * 2i (1.27) i=0

Si este número es negativo y está representado en S.R.C.1

N°1 = 2n - 1 - N

o bien como N es negativo, como

N°1 = 2n - 1 + N (1.28)

Igualando (1.27) y (1.28), se obtiene

n-2

2n - 1 + N = an-1* 2n-1 + ∑ ai * 2i i=0

Despejando N y considerando que an-1 = 1 por ser un número negativo (bit de signo = 1), se tiene

n-2

N = -2n + 2n-1 + 1 + ∑ ai * 2i i=0

como -2n + 2n-1 = - 2n-1

n-2

N = (- 2n-1 + 1) + ∑ ai * 2i i=0

Donde la expresión encerrada entre paréntesis corresponde al peso del bit de signo para el S.R.C.1 que

para el caso de 8 bits será

-28-1 + 1 = -128 + 1 = -127

Para el caso de S.R.C.2 el análisis es similar obteniendo

n-2

N = - 2n-1 + ∑ ai * 2i i=0

en este caso el peso del bit de signo para S.R.C.2 en 8 bits será

-28-1 = -128

Dado un número negativo en complemento a 2

N° = 1001 1111 luego,

N = -27 + (1 + 2 + 4 + 8 + 16) = -128 + (31) = -97 = N

Page 16: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 16

Haciendo la comprobación:

Complementando a 2 el 1001 1111 da 0110 0001 ⇒ 1 + 32 + 64 = 97 c.q.d.

1.8 DESBORDE (OVERFLOW)

Cuando en una operación de suma se supera el rango de números posibles de

representar, con la cantidad de dígitos con que se trabaja, se dice que se ha producido desborde.

En la suma de dos números de distinto signo nunca se puede producir desborde, pero en

la suma de números de igual signo puede producirse, como muestra a continuación:

- 3 1101 + 5 0101

+ +

- 6 1010 + 6 0110

- 9 10111 = +7 + 11 1011 = -5

- 8 1000 + 7 0111

+ +

- 8 1000 + 7 0111

-16 10000 = +0 +14 1101 = -2

Hay dos formas sencillas y rápidas de detectar el desborde:

a- Analizando el bit de signo: Es el método mas común para la detección del desborde, se usa incluso

para la detección en los programas de microcomputadoras. Se basa en que si los dos sumandos son del

mismo signo, el resultado deberá tener el mismo signo que los operandos.

De acuerdo a esto se tiene que: Si A > 0; B > 0; A + B = C; donde C debe tener el

mismo signo que A y B. Del mismo modo para el caso en que A < 0; B < 0; A + B = C. En cualquier caso

en que el resultado, C, no tenga el mismo signo que los sumandos, es que se ha producido desborde.

b- Analizando el transporte: Este método se aplica preferentemente para el Sistema de Representación

en Complemento a Dos, pues en Complemento a Uno existe un caso en que no se cumple, debido a la

dualidad del cero.

Para saber si hay desborde se analiza el transporte del bit se signo: si transporte que

recibe es distinto del que emite existe desborde.

Page 17: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 17

Ejemplos:

Transporte emitido 0 1 Transporte recibido

↓ ↑

127 0 0111 1111

+ 1 + 0 000 0001

128 1 000 0000 => Overflow

Transporte emitido 1 0 Transporte recibido

↓ ↑

- 128 1 1 000 0000

+ - 1 + 1 111 1111

- 129 0 111 1111 => Overflow

El caso en C1 en que este método no se comprueba es el siguiente:

Transporte emitido 1 0 Transporte recibido

↓↑

- 127 1 1 000 0000

+ - 0 + 1 111 1111

- 127 0 111 1111

+ 1 corrección

1 000 0000

en este caso de acuerdo a lo antes expresado debería existir desborde pero en realidad no ha ocurrido.

1.9 SIMPLE PRECISIÓN-DOBLE PRECISIÓN

Debido a que el número máximo representable por un computador es función de la

cantidad de dígitos utilizados para la representación, la longitud de la palabra es a veces insuficiente para

la precisión que se necesita. Por lo que en caso de desear trabajar con una mayor precisión se recurre al

uso de dos o más palabras.

Por ejemplo: suponiendo un computador con una palabra de 8 bits, en caso de trabajar con datos

de 8 bits trabajará en simple precisión, en caso de trabajar con datos de 16 bits trabajará con dos palabras

sucesivas. Es decir:

Page 18: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 18

01001100 = Simple Precisión

01110101 10000001 = Doble Precisión

Se puede trabajar también en triple o más precisión.

En esta forma de trabajar el bit de transporte tiene mucha importancia. Este bit es el que concatena las dos

o más palabras conque se trabaja. Normalmente, cuando se tienen dos o más palabras, se denomina parte

baja a la primer palabra (conjunto de bits menos significativos), y parte alta a la siguiente (conjunto de

bits más significativos). Se debe tener en cuenta que en la primer palabra no existe bit de signo, y en caso

de originarse transporte se deberá sumar al bit menos significativo del byte más significativo. El análisis

de overflow se realiza en el bit más significativo del byte mas significativo.

2.1 Aritmética Decimal Codificada en Binario

2.1.1 Codificación en Binario Natural

Se emplea cuatro bits para codificar cada dígito decimal, quedando por lo tanto seis cuaternas

(combinaciones) de las 16 posibles sin utilizar, pues el sistema decimal posee 10 elementos

Ejemplo:

810 = 1000

910 = 1001

1010 = 0001 0000

1810 = 0001 1000

Recordar que el BCD no es un sistema de numeración como el binario, hexadecimal y octal. El BCD es el

sistema decimal, con cada dígito codificado por su equivalente binario natural.

2.1.2 Operación de suma

Sean di y qi los iésimos dígitos decimales de los números D y Q, y siendo ci el transporte que recibe,

tenemos que:

si se cumple: ci + di + qi ≤ 9 (1.32)

la suma de los respectivos códigos binarios entregará el código natural correcto. En cambio:

si se cumple: ci + di + qi > 9 (1.33)

Page 19: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 19

es fácil concluir que el resultado obtenido hay que sumarle 6 para no considerar las combinaciones

redundantes.

Ejemplos:

12 0001 0010

+ +

15 0001 0101

27 0010 0111

2 7 menores que 9 resultado correcto

27 0010 0111 0011 1011 ajustando la

+ + + operación

14 0001 0100 1 0110

41 0011 1011 0100 0001

210 1110 410 110

En la columna del byte menos significativo se obtiene un resultado mayor que 9 (1011) por lo tanto ese

byte se ajusta mediante la suma de 6 en binario (0110). El sumarle 6 equivale al 7 + 4 = 1 y me llevo 1

Ejemplo:

82 1000 0010

+ +

98 1001 1000

180 1← 0001 1010

0110 0110

1 ←1000 0000

110 810 010

El acarreo surge naturalmente cuando di + qi + ci > 9.

Hay casos en que la corrección se debe hacer en dos etapas. Por ejemplo:

83 1000 0011

+ +

17 0001 0111

100 1001 1010

. 1←0110

1010 0000

. 0110 . .

1 ← 0000 0000

Page 20: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 20

110 010 010

2.1.3 Resta en Binario Decimal

Al igual que en aritmética binaria, tendremos que tener sistemas de representación de números negativos.

Estos son:

a) Complemento a 9

b) Complemento a 10

Los definiremos de la siguiente manera:

C9 (N) = N90 = 10n -1 - N Donde n es el número de dígitos decimales que

C10 (N) = N100 = 10n - N representa el número

Similar al caso de C2 C10 = C9 + 1 (1.34)

El C9 se obtiene restando cada dígito componente del número de 9

9 9 9 . . . 9

- an-1 an-2 an-3 . . . a0

Ejemplo:

Si N = -82 que C9(N) = 99 - 82 = 17 = C9 (N)

La resta vuelve a convertirse en suma conviniendo en representar los números negativos en forma

completa.

2.1.3.a Distintos Casos en C9

2.1.3.a.1. Caso de un sumando negativo con resultado positivo Esquemáticamente: A < 0 ; B > 0 ; (A + B) > 0

Aplicando la definición de complemento a 9 y el mismo artificio que en los casos anteriores:

A + B = -(-A) + B = 10n - 1 - (-A) + B - 10n + 1

A + B + 10n = C9(A) + B + 1 (1.34)

De lo que se deduce que si la suma es positiva siendo uno de los sumandos representado en su

complemento, el resultado es correcto si sumamos el “end around carry”.

Page 21: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 21

Ejemplo:

29 0010 1001 0010 1001

- - → +

18 0001 1000 1000 0001

11 1010 1010

ajuste 0110 0110

end around carry 1 ← 0001 0000

1

0001 0001 = 1110

Se produce el transporte que hay que realimentar al dígito menos significativo que indica que el resultado

es positivo y queda expresado en forma correcta.

2.1.3.a.2. Caso de un sumando positivo, uno negativo y el resultado de la suma negativo

Esquemáticamente: A> 0 ; B < 0 ; (A + B) < 0

Aplicando los mismos principios anteriores vistos:

-(-(A + B)) + 10n - 1 = A + C9 (B)

C9 (A + B) = A + C9 (B) (1.35)

Ejemplo:

1

29 0010 1001

- 32 0110 0111

- 3 1001 0000

0110

1001 0110 = 9610

Al no producirse transporte concluimos que el resultado es negativo y queda expresado en el sistema de

representación utilizado, que para este caso es complemento a 9, transformando:

99 - 96 = 3 c.q.d.

Page 22: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 22

En los dos casos anteriores el análisis del bit de carry nos da la posibilidad de conocer el signo del

resultado

2.1.3.a.3 Caso en que los dos sumandos son negativos

Esquemáticamente:

A < 0 ; B < 0 ; (A + B) < 0

A+B = - (-A) - (-B) = 10n - 1 -(-A) + 10n - 1 - (-B) + 1 + 1 - 10n

10n - 1 - (-(A+B)) + 10n = C9 (A) + C9 (B) + 1, o sea

C9 (A + B) 10n = C9 (A) + C9 (B) + 1 (1.36)

Similar al caso anterior, el transporte deberá sumarse al resultado final para obtener la suma en forma de

complemento 9.

Ejemplo:

- 94 1001 0100 0000 0101

+ - 04 - 0000 0100 1001 0101

- 98 1001 1010

1 0110

1010 0000

0110

1 0000 0000

1

0000 0001 = C9 (A + B)

(A + B) = C9 (C9 (A + B) ) = 99 - 01 = 99 c.q.d.

Por supuesto, en este caso siempre la operación dará negativa, por lo tanto no tiene sentido verificar el

transporte como en los casos anteriores.

2.1.3.b Distintos Casos para Complemento a 10

2.1.3.b.1. Un Sumando Positivo, uno Negativo, Resultado Positivo

Esquemáticamente:

(A+B) > 0 ; B < 0; A > 0

(A + B) = A - B+ 10n - 10n

Page 23: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 23

A + B + 10n = A + C10 ( B)

Indica que si (A+B) > 0 aparece un transporte y el resultado se obtiene en forma correcta sin necesidad

de realimentar el carry.

Ejemplo:

66 0110 0110 0110 0110

- 35 - 0011 0101 + 0110 0101

- 31 1

1100 1011

corrección 0110 0110

1 0011 0110

Para obtener el C10 de 35 se obtiene como 100 - 35”.

2.1.3.b.2 Caso un Sumando Positivo, uno Negativo, Suma Negativa

Esquemáticamente:

(A + B) < 0; B < 0 ; A > 0

10n - (A + B) = A + C10 ( B)

C10 (A + B) = A + C10 ( B) (1.38)

Ejemplo:

42 0100 0010

-95 +0000 0101

-53 0100 0111 = 47 no hay transporte por lo tanto resultado

100 - 47 = 53 c.q.d. complementado

2.1.3.b.3 Caso en que ambos sumandos son menores que cero

Esquemáticamente:

(A+B) < 0 ; B < 0 ; A < 0

C10(A+B) + 10n = C10 (A) + C10 (B) (1.39)

Ejemplo:

Page 24: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 24

-46 0101 0010

-35 0110 0101

-83 1011 0111

corrección 0110

1 ← 0001 0111

1 7 → 100 - 17 = 83 c.q.d.

Normalmente cuando se deben realizar operaciones en aritmética decimal, se utiliza el sistema de

representación complemento a 10.

De lo visto en aritmética decimal codificado en binario, podemos destacar lo siguiente:

• Que aunque se trabaja con números negativos y positivos no se ha mencionado en ningún momento el

bit de signo, esto es porque un byte está formado por 2 nibbles y cada uno se utiliza para codificar en

binario natural al correspondiente dígito decimal, lo cual implica que en el byte no hay lugar para bit

de signo, lo que hace necesario la utilización de un noveno bit para el signo, el cual es necesario, ya

que si por ejemplo se trabajan con datos en S.R.C.10 positivos y negativos y se tiene un dato en 8 bits

como el 3510 = 00110101BCD será imprescindible disponer de un noveno bit que permite discernir si la

combinación de 1 y 0 representa a +3510 o a -6510 .

• Si analizamos los casos suma decimal en que ambos operandos son de distinto signo, el signo del

resultado se determina analizando el carry. Si se produce acarreo, el resultado será positivo, caso

contrario el resultado será negativo.

• También el bit de carry sirve para determinar si se ha producido desborde o no en los casos de ambos

operandos sean positivos o negativos. En el primer caso (ambos operandos positivos), el bit de carry

igual a 1, indica la existencia de overflow. En el caso de ambos operndos negativos es a la inversa, si

el carry es 0 implica overflow y cuando el carry es 1 no existe desborde salvo un caso particular que se

debe contemplar y es cuando la suma de dos datos negativos da -100, se produce acarreo pero el

resultado es erróneo para 8 bits de representación ya que la suma de dos datos negativos no puede dar

cero, por lo tanto la detección de esta condición particular no es complicada.

2.2 CODIFICACIÓN EN BCD EXCESO DE TRES

El código exceso de tres de un dígito decimal se obtiene sumando 3 al código BCD natural del

número en cuestión:

El exceso de 3 del número 710 = 0111 + 0011 = 1010Exc3

Page 25: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 25

2.2.1 SISTEMA DE REPRESENTACIÓN DE COMPLEMENTO A NUEVE:

La propiedad fundamental de éste código es que es autocomplementario para la base 10, como lo

es el Complemento a uno del Binario natural para la base dos. Esto quiere decir que el complemento a 9

se obtiene simplemente complementando booleanamente cada bit.

Matemáticamente:

NExc3 = N + 3

El C1 de NExc3 será para 4 bits

24 - 1 - NExc3 = 15 - NExc3 = 9 + 6 - NExc3

= 9 - (N+3) + 6

= 9 - N + 3

= C9 (N) + 3

C1 (NExc3) = C9 (NExc3)

Se puede observar que la suma de dos dígitos, en caso de no producirse acarreo (es

decir <=9), se halla expresada en Exceso 6 (3+3). Por lo tanto si no se produce acarreo habrá que restarle

tres para que el número siga expresado en exceso de tres, o lo que es lo mismo sumarle el Complemento a

2 de tres, 1101, y despreciar el acarreo que se produzca.

Si la suma es mayor que 9, se produce acarreo, que es correcto, pero el dígito queda

expresado en BCD natural y por lo tanto hay que sumarle tres, 0011, para convertirlo a BCD exceso de

tres.

Ejemplo: 1

32 NExc3 = 0110 0101

+ 18 NExc3 = 0100 1011

50 s/acarreo 1011 0000 acarreo sumar 3

restar 3 1101 0011

1000 0011

8 3 = 5010

2.2.1.a OPERACIONES ARITMÉTICAS - OPERACIÓN DE RESTA EN

EXCESO DE TRES:

Page 26: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 26

Como ya se vio anteriormente el Código BCD exceso de tres es un código

autocomplementario1, por lo que el complemento a nueve de los dígitos en BCD exceso tres se obtiene

simplemente al complementar booleanamente el número bit a bit.

La operación de resta de dos números en exceso de tres se realiza de una manera similar

a la vista para el código BCD natural, pero con la ventaja de obtener el número negativo de una forma

sencilla y rápida.

Ejemplos:

A= 28 AExc3 = 0101 1011

B= -75 C9(75Exc3)= + 0101 0111

A+B=-47 1011 0010

+ 1101 0011

1 1000 0101

El resultado obtenido por la operación es 1000 0101, pero es un número negativo, para obtener

su valor absoluto se aplica Complemento a nueve:

C9(1000 0101)= 0111 1010 = 4710

2.2.1.b REGLAS A TENER EN CUENTA

Las operaciones en BCD exceso de tres deben tener en cuanta los siguientes ajustes:

a- si la suma no produce acarreo el número está en exceso de 6 por lo que hay que

restarle tres para quedar en exceso de tres.

b- si la suma produce acarreo el número está expresado en BCD natural por lo que hay

que sumarle tres para quedar en exceso de tres.

En siguientes ejemplos se detallan las reglas que se deben observar en la ejecución de

operaciones en Exceso de tres.

Ejemplo:

79 1010 1100

+ 10 + 0100 0011

11.. RReeccuueerrddee qquuee uunn ccóóddiiggoo eess aauuttooccoommpplleemmeennttaarriioo ccuuaannddoo llaa ccoommbbiinnaacciióónn ccoorrrreessppoonnddiieennttee aall ccoommpplleemmeennttoo aa 99 ddee NN,, eess ddeecciirr 99--NN,, ssee oobbttiieennee iinnvviirrttiieennddoo llooss uunnooss ppoorr cceerrooss yy vviicceevveerrssaa ddeell nnúúmmeerroo NN..

Page 27: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 27

89 1110 1111

+ 1100 1101 corrección

1 1011 1101

1 Este acarreo se desprecia por provenir de una operación

en Complemento a dos.

Ejemplo:

- 28 1010 0100

+ - 35 + 1001 0111

- 63 1 0011 1011 transp. C9

+ 1 corrección

0011 1100

+ 0011 1101 corrección

0110 1001

1 se desprecia

IMPORTANTE: Lo importante a tener en cuenta es la diferencia entre el acarreo por

corrección, cuando se resta tres en C2, en cuyo caso no se tiene en cuenta, y el acarreo que se produce

por las reglas de C9, que de producirse es necesario ajustar el resultado..

Ejemplo:

50 1000 0011

- 49 + 1000 0011

01 1 0000 0110

+ 1

0000 0111

+ 0011 1101

0011 0100 = 0110

2.3 REPRESENTACIÓN EN COMA FIJA Y COMA FLOTANTE

En los temas anteriores se estudiaron las operaciones aritméticas con números enteros

codificados en el sistema binario natural o en los códigos decimal codificado en binario o en exceso de

tres considerándolos enteros.

Page 28: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 28

Las operaciones con números fraccionarios introducen un nuevo concepto, que es de la

coma que separa la parte fraccionaria de la parte entera.

Se utilizan dos formas principales de representación de la coma de un número decimal:

el modo de coma fija, llamado así porque la coma es colocada arbitrariamente por el programador en

cualquier lugar, y el modo de coma flotante, donde su ubicación está definida por un exponente.

COMA FIJA:

En ésta forma de representación se asigna, tal como indica su nombre, una posición fija

a la coma. De tal modo, que si se opera con números binarios de ocho bits, por ejemplo, la coma se puede

situar en forma arbitraria en cualquiera de las posiciones, pero una vez elegida no se modifica.

La principal ventaja de éste método de representación es que los algoritmo que realizan

las diferentes operaciones son los mismos que los estudiados para los números enteros anteriormente. Por

ejemplo sean los siguientes números de ocho bits con dos decimales 011011,11 y 10001,01 la suma de

ambos números es:

011011,11

+ 100001,01

111101,00

De acuerdo a ésta suma, se observa claramente que la operación se realiza como si

fueran enteros.

El principal inconvenientes de la representación en coma fija es la limitación del número

máximo a representar. Así por ejemplo, si se supone, igual que en el ejemplo dado, números de 8 bits con

dos fraccionarios, el máximo número que se puede representar es 111111,11 y el mínimo distinto de cero

es 0,01. Por lo que el límite máximo y mínimo depende de la posición de la coma. Además es muy

probable que se produzca un desborde (overflow) en operaciones como la multiplicación y también u

underflow en operaciones e división.

COMA FLOTANTE:

Este método de representación evita el inconveniente antes mencionado, pero tiene el

inconveniente de que la realización de algoritmos de las diferentes operaciones matemáticas son más

complejos.

La representación de los números en coma flotante en un sistema de numeración de base

B se realiza mediante una mantisa m y un exponente e tal que:

n = m * Be

donde:

m = mantisa

Page 29: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 29

B = base

e = exponente

Inclusive puede adicionarse el signo, tanto en la mantisa como en el exponente.

N = S.M * BSE

Por ejemplo, en el sistema decimal B = 10, se pueden tener las siguientes

representaciones de un mismo número:

2,22 x 104 = 0,0225 x 106 = 225,00 x 10-1 = .....

donde se tiene distinto valor de mantisa y de exponente de acuerdo a la representación elegida.

De todas las posibles formas de representar un número en coma flotante la que se utiliza

en la práctica y se define como normalizada es aquella en que la coma decimal se coloca antes de la cifra

mas significativa distinta de cero. De acuerdo a esto el número anteriormente representado, en forma

normalizada se escribe:

0,225 x 105

La normalización de un número se realiza desplazando la coma tantos lugares como sea

necesario hacia la izquierda o hacia la derecha y aumentando o disminuyendo el valor del exponente en

tantas unidades como desplazamientos se han efectuado.

En el Sistema Binario se pueden representar de forma similar los números en el formato

de coma flotante. Por ejemplo:

0,011 x 20011 = 1,1 x 20001 = 110 x 2-0001 = ....

La expresión normalizada es:

0,11 x 20010

Los números se almacenan en coma flotante en los sistemas digitales mediante su

mantisa y su exponente en el siguiente formato (utilizándose la forma normalizada):

EXPONENTE MANTISA

Por ejemplo, para una palabra de 8 bits, si se utilizan 4 para la mantisa y 4 para el exponente, con una

base binaria, obtenemos como número máximo:

Page 30: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 30

15 * 215 = 491,52010

mientras que con coma fija, y con el mismo formato para la parte entera que para la decimal, solo se podrá

codificar hasta el 15,93.

La mantisa controla la precisión, mientras que el exponente especifica el rango del número. El número de

bits para la mantisa es justamente fijado de acuerdo a la precisión requerida. Este sistema permite

aumentar la exactitud de los cálculos pues se logra un uso mas racional de los registros y es menos

frecuente el rebasamiento. La programación es mas simple ya que no se requiere la preparación de los

operandos para evitar la pérdida de precisión.

En cuanto a las desventajas están la relativa complejidad de la adición pues hay que igualar los

exponentes.

Por su parte el método de coma fija, tiene la ventaja de que si fijamos los operandos entre (-1; +1), el

producto también estará en ese rango y no hará falta modificar el posible factor de escala.

Como desventaja, la programación es mas complicada, porque si los dos factores son pequeños el error de

redondeo (round off) puede ser tan grande que requeriría de una programación especial para reducirlo.

En aplicaciones de control, puesto que el programa se desarrolla una sola vez, y queda fijo en la

computadora, es viable el punto fijo que simplifica el hardware.

Con el advenimiento de los co-procesadores o procesadores aritméticos se minimiza el problema del

punto flotante, ya que estos permiten trabajar en esta forma con una capacidad de por ej. 80 bit y realizar

operaciones, no solo aritméticas sino trigonométricas.

2.4 Detección de Errores Los procesadores digitales vistos tienen la posibilidad de conformar una inter relación con otros sistemas

procesadores, u otros sistemas inteligentes. Para ello es fundamental la comunicación entre los sitemas

conectados. Dicha comunicación es normalmente digital y la información se envía codificada. Como es

lógico suponer hay varios códigos para la transmisión de información que sobre todo tienen en cuenta la

detección de errores entre el emisor y el receptor.

Uno de los métodos mas simple de detección de errores es el agregado a la palabra a transmitir, de un bit

extra denominado “bit de paridad”. (o de imparidad).

En dicho bit se lleva la cuenta de que si la cantidad de unos de la palabra a transmitir es par (paridad par),

o impar (imparidad).

Page 31: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 31

Ejemplo:

Sea la palabra de 7 bits: 0010110

El total de uno es 3 ⇒ impar, para restablecer la paridad (dicho de otra manera, para que la cantidad de

unos sea siempre par), se debe agregar un “1” que por convención es en el lugar mas significativo.

Bit de paridad par 1 0010110

Distintos ejemplos:

0110101 0011111

00110101 10011111

De la misma forma se trabaja para el caso de tener bit de imparidad

Ejemplos:

1000111 0001110

11000111 00001110

En combinación con esta técnica los fabricantes de circuitos integrados proveen detectores de bit de

paridad y de imparidad, por lo tanto si se instala uno en el transmisor y otro detector en el receptor, al

comparar las salidas de ambos se sabrá si produjo un error en el envío de información.

Este método tiene la ventaja de la simplicidad, pero al ser tan elemental no detecta por ejemplo un doble

error, ya que de producirse no se vería afectada la cantidad de unos del dato enviado. Para ellos hay

códigos mucho mas elaborados como ser el de Hamming, para estos, es imprescindible el agregado de

mas bits de control.

3 APLICACIONES PRACTICAS EN MICROPROCESADORES

3.1 Suma Binaria La suma binaria se realiza de la misma forma que la suma decimal, excepto que el transporte que produce

corresponde a potencias de 2 en vez de potencias de 10.

En el caso de realizarse la suma con un microprocesador, la interpretación de los contenidos de los bits de

carry (transporte), de overflow (desborde) y de signo, como así también del resultado, depende del

sistema de representación utilizados para los datos. Por lo que el Programador es el que debe tener un

criterio adecuado para su interpretación correcta, esto se muestra en los siguientes ejemplos:

Page 32: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 32

Antes de presentar los ejemplos, conviene recordar bajo que condiciones se activa ( se pone en 1 ), cada

uno de los bits del registro de estado luego de una operación de suma.

El bit de Carry (CY) se pone en 1 luego de una operación de suma cuando se produce un transporte desde

el bit 7.

El bit de Signo ( S) se pone en 1 luego de una operación de suma cuando el bit 7 del resultado es uno. nota: Recordar que en la mayoría de los sistemas de representación el bit 7 es el bit de signo para datos de 8 bits . El bit de OverFlow (OV) se pone en 1 luego de una operación de suma si el acarreo que recibe el bit 7 es

distinto al acarreo que emite este bit, (con la consideración de que el bit 7 es el de signo).

Teniendo en cuenta lo anterior podemos anticipar :

a - Que el bit de signo solo tiene sentido en los números con signo.

b - Que el bit de overflow solo tiene sentido en los números con signo y cuya representación se

corresponda a la del Sistema de Representación de Complemento a 2. (S.R.C.2)

De lo anterior podría surgir una afirmación bastante errónea que es la de suponer que la suma se realiza

en sistema de representación de complemento a 2, lo que es incorrecto ya que la suma binaria es una sola,

lamentablemente es abundante la bibliografía que comete este error. Lo que realmente sucede es que

como se expreso anteriormente los bits de signo y más especialmente el bit de overflow se activan según

las reglas del SRC2.

Recordar además que algunos procesadores no poseen bit de overflow por lo que su determinación de

deberá realizar analizando el signo de los operandos y el del resultado.

Ejemplo 1:

Números sin signo:. Todos los bits forman la parte significativa del número, por lo tanto el bit de signo

no cumple ninguna función en esta representación. El bit de desborde (si lo tuviese) tampoco cumple

ninguna función por si solo. El rango de representación para 8 bits es de 0 a 255.

a) Sin desborde. b) Sin desborde c) Con desborde.

11001101 CD 205 01101010 6A 106 11001101 CD 205

00011101 1D 29 00111100 3C 60 01000001 41 65

________ ____ ____ _________ ___ ___ _________ ___ ____

11101010 EA 234 10100110 A6 166 (1)00001110 0E 270

CY = 0 CY = 0 CY = 1

S = 1 S = 1 S = 0

OV = 0 OV = 1 OV = 0

En los casos a y b , la suma no excede el máximo número que puede ser representado, en estos casos el

bit de carry permanece en cero. Aunque no hay desborde en b, el bit de overflow se pone en uno, esto se

Page 33: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 33

debe a que la activación de este bit depende de los transportes que recibe y emite el bit 7 , que para este

caso no se consideran por no cumplir la función de bit de signo del dato.

En el ejemplo c), la suma (270) excede el campo de representación de 8 bits (255) y un carry es

generado, indicando que la suma es mayor de la que puede ser representada por 8 bits. Por lo tanto existe

overflow, en este caso el bit de carry cumple la función de indicador de desborde, también el bit de

transporte representa el noveno bit 28 del número que se necesita para tener un resultado correcto.

En los microcomputadores, el bit de carry es capturado en un registro de 1 bit que actúa como una

extensión del acumulador. Luego de una operación de suma el bit de carry debe ser examinado para

determinar su estado.

El bit de carry y el acumulador aparecen en el microcomputador como se observa en la figura siguiente:

Acumulador

Carry 7 6 5 4 3 2 1 0 Designación de bit

3.1.1 Suma en sistema de representación de magnitud y signo

Los siguientes ejemplos muestran casos de suma en este sistema, el cual utiliza el bit 7 como bit de signo.

Debido a esto solo 7 bits (bits 0 al 6) son utilizados para representar la magnitud, lo que implica que el

rango de representacioón es de -127 a +127

Ejemplo 2

a) Ambos operandos son positivos, la suma no excede el campo de representación, por lo tanto el

resultado de la operación es el correcto.

01110000 70 +112

00000111 07 + 7

------------ --- -------

01110111 77 +119

CY = 0 S = 0 OV = 0

b) Ambos operandos son positivos, la suma excede el campo de representación, por lo tanto el resultado

de la operación no es el correcto.

01110000 70 +112

00110000 07 + 48

Page 34: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 34

------------- --- -------

10100000 A0 - 32 (debería ser 160)

CY = 0 S = 1 OV = 1

Note que en el ejemplo 2b el rango positivo de +127 es excedido por la suma. El carry desde el bit 6 fue

propagado sobre el bit 7, el bit de signo y el bit 7 se pone en 1, indicando incorrectamente que la suma es

un número negativo. El resultado aparece como -32 en la forma magnitud y signo. Además ningún carry

fue generado desde el bit 7 al registro de carry. El registro de carry contiene un cero. El otro registro

(overflow) se pone en 1, indicando que la suma excedió el campo de representación. Para la suma

utilizando la representación de magnitud y signo, la condición de colocar el bit de overflow en 1 es que se

produzca un transporte del bit 6 del acumulador al bit 7. Asumiendo que el microcomputador posee un

registro de carry y otro de overflow, la suma del ejemplo 2b debería aparecer de la siguiente forma.

Acumulador

Carry 7 6 5 4 3 2 1 0 Designación de bit

Overflow

El bit de overflow igual a 1 indica que el rango fue excedido y alguna acción de corrección deberá hacerse

por programa, para modificar el valor erróneo de la suma. En el ejemplo 2b se puede interpretar al bit de

carry como bit de signo y el bit 7 del acumulador como el bit mas significativo del resultado. En otras

palabras el bit de signo migra hacia el bit de carry, quedando el resultado correcto expresado en 9 bits.

Una muestra correcta del resultado en 9 bits es la siguiente:

Acumulador

Carry 7 6 5 4 3 2 1 0

c) Ambos operandos son negativos, la suma no excede el campo de representación, por lo tanto el

resultado de la operación no es el correcto.

0 1 0 1 0 0 0 0

0

1

0

= 16010

1 0

1 0 0 0 0 0

Page 35: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 35

11101011 EB -107

10001010 8A - 10

------------- ---- -------

(1)01110101 75 +117 debería ser -117

CY = 1 S = 0 OV = 1

El resultado de la suma de dos números negativos, representados en magnitud y signo, es incorrecto en

cuanto a su signo. La corrección es fácil de implementar por soft, ya que en la suma de dos números de

igual signo, el resultado debe tener el mismo signo. En este caso no existe desborde aunque el bit de

overflow es activado. También el bit de carry puede ser interpretado como bit de signo y el bit 7 del

acumulador como el bit mas significativo del resultado. Alternativamente, el bit 7 puede colocarse en 1

como bit de signo y resetear el bit de carry. Los registros en el microprocesador en este caso deberán

aparecer como se ilustra a continuación.

Acumulador

Carry 7 6 5 4 3 2 1 0

d) Ambos operandos son negativos, la suma excede el campo de representación, por lo tanto el resultado

de la operación no es el correcto.

11101111 EF -111

10100111 A7 - 39

------------- ---- ------

(1)10010110 96 -150

CY = 1 S = 1 OV = 0

Aunque el bit de overflow no se active, se ha producido un desborde. Como en los ejemplos previos, el bit

de carry es interpretado como bit de signo y el bit 7 del acumulador como el bit mas significativo del

resultado. En este caso en particular donde ambos números son negativos, el bit de carry siempre se

pondrá en 1 como consecuencia del transporte producido al sumar los bits 7 de los sumandos, ya que

ambos son 1.

En este sistema de representación cuando se deben sumar números de distintos signo, es recomendable

utilizar el sistema de representación complemento a 1 o el sistema de representación complemento a 2,

para lo que se deberán convertir los datos al sistema de representación elegido.

0 1 1 1 1 0 1 0 1 = -117

Page 36: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 36

3.1.2 Suma en Sistema de Representación de Complemento a 2.

Los siguientes ejemplos muestran los distintos casos de suma en este sistema de representación, el cual

utiliza el bit 7 como bit de signo. Debido a esto solo 7 bits (bits 0 al 6) son utilizados para representar la

magnitud, lo que implica que el rango de representacioón es de -128 a +127, por tener una única

representación del cero.

Para este sistema realizaremos los mismos ejemplos que se dieron en el caso anterior, observando que

los contenidos del acumulador y los flags son los mismos, ya que la suma binaria es una sola, lo que sera

diferente es la interpretación de los resultados para algunos casos.

Ejemplo 3

a) Ambos operandos son positivos, la suma no excede el campo de representación, por lo tanto el

resultado de la operación es el correcto.

01110000 70 +112

00000111 07 + 7

------------ ---- -------

01110111 77 +119

Cy = 0 S = 0 OV = 0

Se observa que el ejemplo 3 a es idéntico al 2 a.

b) Ambos operandos son positivos, la suma excede el campo de representación, por lo tanto el resultado

de la operación no es el correcto.

01110000 70 +112

00110000 30 + 48

------------- ---- -------

10100000 A0 - 96 en SRC2 (debería ser +160)

CY = 0 S = 1 OV = 1

Note que en el ejemplo 3b el rango positivo de +127 es excedido por la suma. El carry desde el bit 6 fue

propagado sobre el bit 7, el bit de signo y el bit 7 del resultado se ponen a 1, indicando incorrectamente

que la suma es un número negativo. El resultado aparece como -96 en la forma de SRC2. Además ningún

transporte fue generado desde el bit 7 al registro de carry, por lo tanto el registro de carry contiene un

cero. El otro registro (overflow) se pone en 1, indicando que la suma excedió el campo de representación.

Asumiendo que el microcomputador posee un registro de carry y otro de overflow, la suma del ejemplo 3b

debería aparecer de la siguiente forma.

Page 37: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 37

Acumulador

Carry 7 6 5 4 3 2 1 0

Overflow

El bit de overflow igual a 1 indica que el rango fue excedido y alguna acción de corrección deberá hacerse

por programa, para modificar el valor erróneo de la suma. En el ejemplo 3b se puede interpretar al bit de

carry como bit de signo y el bit 7 del acumulador como el bit mas significativo del resultado. En otras

palabras el bit de signo migra hacia el bit de carry, quedando el resultado correcto expresado en 9 bits.

Una muestra correcta del resultado en 9 bits es el siguiente:

Acumulador

Carry 7 6 5 4 3 2 1 0

Si el microprocesador con que se esta trabajando no posee bit de overflow, su determinación deberá

realizarse analizando los bits de signos de los operandos y el del resultado.

c) Ambos operandos son negativos, la suma no excede el campo de representación, por lo tanto el

resultado de la operación es el correcto:

10010101 95 -107

+ + +

11110110 F6 - 10

------------- ---- -------

10001011 8B -117

CY = 1 S = 1 OV = 0

El resultado de la suma de dos números negativos, representados en SRC2, es correcto ya que la suma de

dos números negativos dio como resultado otro del mismo signo, el bit de carry se activo lo cual siempre

ocurre cuando se suman dos números negativos. El bit de overflow no se activa , lo cual asegura en este

caso un resultado correcto.

Los registros en el microprocesador en este caso quedan como se muestra a continuación.

0

0

1 0 1 0 0 0 0

1 0 1 0 0 0 0

0

0

1

= 16010

Page 38: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 38

Acumulador

Carry 7 6 5 4 3 2 1 0

d) Ambos operandos son negativos, la suma excede el campo de representación, por lo tanto el resultado

de la operación no es el correcto.

10010001 91 -111

11011001 D9 - 39

------------- ---- ------

(1)01101010 6A -150

CY = 1 S = 1 OV = 1

El bit de overflow se activa, indicando que se ha producido un desborde. Como en los ejemplos previos,

cuando se produce desborde, el bit de carry es interpretado como bit de signo y el bit 7 del acumulador

como el bit mas significativo del resultado. En este caso en particular donde ambos números son

negativos, el bit de carry se pondrá siempre en 1 como consecuencia del transporte producido al sumar los

bits 7 de los sumandos, ya que ambos son 1.

e) Suma de un dato negativo y otro positivo, el resultado es el correcto y positivo.

01101100 6C 108

11001000 C8 - 56

------------- ---- ------

00110100 34 52

CY = 1 S = 0 OV = 0

f) Suma de un dato negativo y otro positivo, el resultado es el correcto y negativo.

10010100 94 -108

00111000 38 56

------------ ---- -------

11001100 CC - 52

CY = 0 S = 1 OV = 0

1 1 0 0 0 1 0 1 1 = -117

Page 39: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 39

En los dos casos 3e y 3f, el resultado es correcto, lo que esta indicado con la no activación del bit de

overflow, lo cual es lógico ya que al ser datos de distinto signo su suma nunca producirá desborde. El

signo del resultado estará dado por el valor que tome el bit de signo, o también por el complemento a 1

del bit de carry .

Conclusión: En la suma en SRC2, para cualquiera de los casos, la validez del resultado esta dada por el

bit de overflow ( OV = 0 resultado correcto, OV = 1 resultado incorrecto ), cosa que no sucedía en los

otros Sistemas de representación vistos.

3.2 Resta binaria

Para la resta binaria se desarrolla un análisis similar, al que se realizo con la suma.

La resta binaria se realiza de la misma forma que la resta decimal, excepto que el pido (borrow) que

produce corresponde a potencias de 2 en vez de potencias de 10.

Se debe tener en cuenta que en la actualidad la mayoría de los microprocesadores y microcontroladores

poseen la instrucción de resta SUB A - Reg., resta con pido SBB Ac - Reg - Cy para el trabajo en

precisión múltiple.

También los procesadores poseen una instrucción de resta particular que es la comparación la cual

funciona igual a la resta pero no entrega resultado. El único efecto que produce es actualizar los flags de

carry, signo, cero y de overflow si el procesador lo posee.

No obstante que el procesador posee instrucciones de resta no es condición necesaria y suficiente para

afirmar que en su unidad aritmética lógica posea un restador, es posible que algunos procesadores realicen

esta operación complementando a dos y sumando, pero esto es un problema interno del procesador que

solo interesa en particular al fabricante. Desde el punto de vista que nos ocupa, el del usuario, podemos

afirmar que si la máquina posee una instrucción de resta, entonces resta . Esta redundancia en la

afirmación es a los fines de que no quede ninguna duda que podría conducirnos a error.

Algunos microprocesadores, en particular los de las primeras generaciones, no poseían en su repertorio

básico de instrucciones, la operación de resta, sin embargo se podían hacer operaciones de resta

complementando y sumando. En particular el up SC/MP de National poseía una instrucción de

complemento a 1 y suma con carry (Ac + C1(dato) + Cy) CAD, la cual era muy potente ya que permitía

realizar una gran cantidad de operaciones variando los operandos.

Por ejemplo:

Si Ac = 0 y Cy = 0 La instrucción complementa a 1 el dato

Si Ac = 0 y Cy = 1 La instrucción complementa a 2 el dato

Si Ac = dato1 y Cy = 0 dato1 + C1 (dato)

Si Ac = dato1 y Cy = 1 dato 1 + C2 (dato)

Además como esta instrucción actualiza el bit de carry, servía para realizar operaciones en múltiple

precisión.

Page 40: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 40

Respecto a la instrucción de complemento a 1 y sumar, parece a primera vista bastante elemental y uno

piensa y se pregunta ¿ porqué en vez de C1 y sumar con carry, el fabricante hubiera provisto al procesador

de una instrucción de C2 y suma, ya que trabajar en C2 es mucho mas fácil que en C1 ?. La respuesta a esta

pregunta es que si la instrucción provista fuera la de C2 y sumar, nunca se podría trabajar en precisión

múltiple, ya que el C2 de un dato en precisión múltiple no es el C2 de c/u de los bytes que lo conforman.

El C2 de un dato en precisión múltiple es el C1 de c/u de los byte que lo conforman mas uno en el bit

menos significativo del byte menos significativo, teniendo en cuenta los posibles acarreos producidos a

los otros bytes mas significativos.

En el caso de realizarse la resta con un microprocesador, la interpretación de los contenidos de los bits de

carry (transporte), de overflow (desborde) y de signo, como así también del resultado, depende del

sistema de representación utilizados para los datos, lo mismo que ocurría en la suma. Por lo que el

Programador es el que debe tener un criterio adecuado para su interpretación correcta, esto se muestra en

los siguientes ejemplos:

Antes de presentar los ejemplos, conviene recordar bajo que condiciones se activa ( se pone en 1 ), cada

uno de los bits del registro de estado luego de una operación de resta.

Se hace notar que para la resta el bit carry cumple la función de bit de pido, y la reglas para la activación

del bit de overflow dependen de los pidos que recibe y que cede o da el bit 7 (bit de signo) del minuendo.

El bit de Carry (CY) se pone en 1 luego de una operación de resta cuando para poder realizar la

diferencia el bit 7 del minuendo debe recibir un pido.

El bit de Signo ( S) se pone en 1 luego de una operación de resta cuando el bit 7 del resultado es uno, lo

mismo que ocurría en la suma.

El bit de overflow (OV) se pone en 1 luego de una operación de resta si el pido que recibe el bit 7 del

minuendo es distinto al pido cede al bit 6, para que la resta pueda substanciarse, (con la consideración de

que el bit 7 es el de signo).

Teniendo en cuenta lo anterior podemos anticipar los mismos conceptos que se explicitaron para la

suma:

a - Que el bit de signo solo tiene sentido en los números con signo.

b - Que el bit de overflow solo tiene sentido en los números con signo y cuya representación se

corresponda a la del Sistema de Representación de Complemento a 2. (S.R.C.2)

Para los ejemplos usaremos la siguiente notación :

Minuendo M, Sustraendo Su, Resta o Diferencia D, bit 7 del Minuendo M7.

Ejemplo 1:

Page 41: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 41

Números sin signo:. Todos los bits forman la parte significativa del número, por lo tanto el bit de signo

del registro de estado no cumple ninguna función en esta representación. El bit de desborde (si lo tuviese)

tampoco cumple ninguna función por si solo. El rango de representación para 8 bits es de 0 a 255.

a) M > Su Y D 7 = 1 b) M > Su y D7 = 0

11001101 CD 205 01101010 6A 106

- - - - - -

00011101 1D 29 00111010 3A 58

------------ ------- ----- ------------ ----- ----

10110000 B0 176 00110000 30 48

CY = 0 S = 1 OV = 0 CY = 0 S = 0 OV = 0

c) M> Su , M7 =1 y D7 = 0 d) M < Su

10100110 A6 166 (1) 11001101 CD 205

- - - - - -

01000011 43 67 11101011 EB 235

------------ ------- ----- ------------- ------ -----

01100011 63 99 11100010 E2 -30

CY = 0 S = 0 OV = 1 CY = 1 S = 1 OV = 0

En los casos a, b y c, en que el minuendo es mayor que el sustraendo, independientemente del valor del

bit 7 del minuendo o del resultado, el flag de carry se ponen cero, lo que indica:

a) La no existencia de pido.

b) Que el resultado es positivo

c) Que el valor obtenido como resultado es correcto.

En el caso d el bit de carry se pone en 1 indicando:

a) La necesidad de un pido (borrow), para poder realizar la resta.

b) Que el minuendo es menor que el sustraendo.

c) Que el resultado es incorrecto, ya que es negativo y estos números no están contemplados en este

sistema de representación.

En todos los casos, los valores de los bits de overflow y de signo obtenidos luego de la operación de resta

no cumplen ninguna función.

Page 42: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 42

Se hace notar que en el caso en que ambos operandos sean iguales el resultado será cero, el bit de carry no

se activa y el flag de cero se pone en uno.

3.2.1 Resta en sistema de representación de magnitud y signo

En este sistema de representación solo analizaremos los casos en que se deben restar números de igual

signo, dado que si se tienen que restar números de distinto signo es más conveniente la complementación

del bit de signo del sustraendo y realizar la suma de dos números de igual signo, el del minuendo, cuyos

casos fueron descriptos anteriormente.

Los siguientes ejemplos muestran casos de resta en este sistema, el cual utiliza el bit 7 como bit de signo.

Debido a esto solo 7 bits (bits 0 al 6) son utilizados para representar la magnitud, lo que implica que el

rango de representacioón es de -127 a +127

Ejemplo 2

a) Ambos operandos son positivos, el minuendo es mayor que el sustraendo, por lo tanto el resultado de

la operación de resta es el correcto.

01110011 73 +115

- - -

00010111 17 + 23

------------ ---- -------

01011100 5C + 92

CY = 0 S = 0 OV = 0

b) Ambos operandos son positivos, el minuendo es menor que el sustraendo, por lo tanto el resultado de la

operación no es el correcto para este sistema de representación.

00010111 17 + 23

- - -

01110011 73 +115

------------- --- -------

10100100 A4 - 36 (debería ser - 92)

CY = 1 S = 1 OV = 0

En el ejemplo se observa lo siguiente:

Page 43: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 43

• Que el resultado de la resta es incorrecto para el sistema de representación de módulo y signo.

• Que el bit de carry se puso en uno indicando que para poder restar hubo que realizar un pido.

• Que el bit de signo del resultado se pone en uno indicando en forma correcta la obtención de un

resultado negativo.

• Que si al resultado se lo analiza pensando que esta expresado en sistema de representación de

Complemento a 2 es correcto.

• Que teniendo en cuenta lo anterior, como el resultado desde el punto de vista del SRC2, es correcto, el

bit de overflow no se activa.

En este caso si se desea obtener el resultado de la resta en forma correcta en sistema de representación de

módulo y signo, teniendo en cuenta que el resultado obtenido esta en SRC2, se deberá realizar una

corrección, la cual consiste en complementar a dos el resultado obtenido para obtener el módulo y luego

poner un uno en el bit de signo indicando que el dato obtenido es negativo.

La operación de complementar a dos un dato se puede realizar mediante alguna de las siguientes

alternativas:

• Usando la instrucción de complementar a dos un dato NEG, en el caso que el procesador posea esta

instrucción en su repertorio.

• Usando la instrucción de complementar a uno un dato CMP y luego sumar uno.

• Restando 0016 menos el dato.

c) Ambos operandos son negativos, el minuendo es mayor que el sustraendo, el resultado de la operación

de resta es incorrecto.

10010111 97 - 23

- - -

11110011 F3 -115

------------ ------ -------

10100100 A4 -36 ( debería ser + 92 )

S = 1 Cy = 1 OV = 0

En este caso el resultado obtenido es incorrecto. la resta debió dar positiva, por lo tanto, como era de

esperar el bit de signo no nos dice nada, el bit de overflow se pone en cero aunque el resultado es erróneo,

esto igual que en los casos anteriores en que la operación es correcta desde el punto de vista del sistema

de representación de complemento a dos.

Para obtener el resultado correcto se debería complementar a dos el resultado obtenido.

El bit de carry en uno indica que para poder realizarce la resta se debió formalizar un pido, lo que

indicaría que el minuendo es menor que el sustraendo lo cual también es incorrecto.

Page 44: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 44

Por lo visto, en este caso se debe tener mucho cuidado cuando se analizan los resultados obtenidos.

d) Ambos operandos son negativos, el minuendo es menor que el sustraendo, el resultado de la operación

no es el correcto para este sistema de representación.

11110011 F3 -115

- - -

10010111 97 - 23

------------- ----- -------

01011100 5C + 92 (debería ser - 92)

CY = 0 S = 0 OV = 0

En el ejemplo se observa lo siguiente:

• Que el resultado de la resta es incorrecto para el sistema de representación de módulo y signo.

• Que el bit de carry se puso en cero indicando que se pudo restar sin realizar pido, lo que induciría al

error de suponer que el minuendo es mayor que el sustraendo..

• Que el bit de signo del resultado se pone en cero indicando la obtención de un resultado positivo

erróneo.

• Que si al resultado se lo analiza pensando que los datos están expresados en sistema de

Representación de Complemento a 2 es correcto.

• Que teniendo en cuenta lo anterior, como el resultado desde el punto de vista del SRC2, es correcto, el

bit de overflow no se activa.

En este caso si se desea obtener el resultado de la resta en forma correcta en sistema de representación de

módulo y signo, se deberá realizar una corrección, la cual consiste en poner en uno en el bit de signo

indicando que el dato obtenido es negativo.

3.2.2 Resta en Sistema de Representación de Complemento a 2.

Los siguientes ejemplos muestran casos posibles de resta en este sistema de representacion, el cual utiliza

el bit 7 como bit de signo. Debido a esto solo 7 bits (bits 0 al 6) son utilizados para representar la

magnitud, lo que implica que el rango de representacioón es de -128 a +127, por tener un única

representación del cero, recordar que la gran diferencia que existe entre este sistema y el sistema de

modulo y signo, redica que en el SRC2 el bit de signo tiene peso, formando parte del número, por lotanto

es posible operar con el como con cualquier otro bit, peso del bit de signo es -2N-1 que para el caso de 8

bits corresponde a -128. .

Page 45: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 45

Por lo expresado en este sistema de representación, es posible realizar la resta sin ninguna complicación,

salvo en los casos en que se produzca desborde. Para este sistema realizaremos en algunos casos, los

mismos ejemplos que se dieron en el ejemplo anterior, observando que los contenidos del acumulador y

los flags son los mismos, ya que la resta binaria es una sola, lo que sera diferente es la interpretación de

los resultados.

Ejemplo 3

a) Ambos operandos son positivos, el minuendo es mayor que el sustraendo, por lo tanto el resultado de

la operación de resta es el correcto.

01110011 73 +115

- - -

00010111 17 + 23

------------ ------ -------

01011100 5C + 92

Cy = 0 S = 0 OV = 0

b) Ambos operandos son positivos, el minuendo es menor que el sustraendo, por lo tanto el resultado de la

operación es el correcto.

00010111 17 + 23

- - -

01110011 73 +115

------------- ----- -------

10100100 A4 - 92

CY = 1 S = 1 OV = 0

En el ejemplo se observa lo siguiente:

• Que el resultado de la resta es correcto.

• Que el bit de carry se puso en uno indicando que para poder restar hubo que realizar un pido.

• Que el bit de signo del resultado se pone en uno indicando en forma correcta la obtención de un

resultado negativo.

• El bit de overflow no se activa ya que una resta de dos datos positivos nunca podrá producir desborde.

c) Ambos operandos son negativos, el minuendo es mayor que el sustraendo, el resultado de la operación

de resta es correcto y positivo.

Page 46: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 46

11101001 E9 - 23

- -

10001101 8D -115

------------ --------- -------

01011100 5 C 92

S = 0 CY = 0 OV = 0

En el ejemplo se observa lo siguiente:

• Que el resultado de la resta es correcto.

• Que el bit de carry se puso en cero indicando que se pudo realizar la resta sin necesidad de pido.

• Que el bit de signo del resultado se pone en cero indicando en forma correcta la obtención de un

resultado positivo, minuendo mayor que el sustraendo.

• El bit de overflow no se activa ya que una resta de dos datos negativos nunca podrá producir desborde.

d) Ambos operandos son negativos, el minuendo es menor que el sustraendo, el resultado de la operación

es el correcto para este sistema de representación.

10001101 8D -115

- - -

11101001 E9 - 23

------------ -------- -------

10100100 A 4 - 92

CY = 1 S = 1 OV = 0

En el ejemplo se observa lo siguiente:

• Que el resultado de la resta es correcto.

• Que el bit de carry se puso en uno indicando que para poder realizar la resta se necesito realizar un

pido. No indicando en este caso que el minuendo sea menor que el sustraendo.

• Que el bit de signo del resultado se pone en uno indicando en forma correcta la obtención de un

resultado negativo minuendo menor que el sustraendo.

• El bit de overflow no se activa ya que una resta de dos datos negativos nunca podrá producir desborde.

Page 47: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 47

e) Minuendo es positivo, sustraendo negativos, la resta no produce desborde por lo tanto el resultado de

la operación es el correcto.

01100011 63 99

- - -

11101001 E9 - 23

------------ -------- -------

01111010 7A 122

CY = 1 S = 0 OV = 0

En el ejemplo se observa lo siguiente:

• Que el resultado de la resta es correcto.

• Que el bit de carry se puso en uno indicando que para poder realizar la resta se necesito realizar un

pido. No indicando en este caso que el minuendo sea menor que el sustraendo.

• Que el bit de signo del resultado se pone en cero indicando en forma correcta la obtención de un

resultado positivo minuendo mayor que el sustraendo.

• El bit de overflow no se activa asegurando un resultado correcto

f) Minuendo es positivo, sustraendo negativos, la resta produce desborde por lo tanto el resultado de la

operación es incorrecto.

01110011 73 115

- - -

11101001 E9 - 23

------------ -------- -------

10001010 8A -118 (debería ser 138)

CY = 1 S = 1 OV = 1

En el ejemplo se observa lo siguiente:

• Que el resultado de la resta es incorrecto.

• Que el bit de carry se puso en uno indicando que para poder realizar la resta se necesito realizar un

pido.

• Que el bit de signo del resultado se pone en uno indicando en forma incorrecta que el resultado es

negativo.

Page 48: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 48

• El bit de overflow se activa indicando un resultado incorrecto.

El resultado es incorrecto porque se ha sobrepasado el límite de representación para 8 bits, si se desea

obtener el resultado correcto se deberá considerar una representación de 9 bits donde el bit de carry

complementado representa al bit de signo.

g) Minuendo es negativo, sustraendo positivo, la resta no produce desborde por lo tanto el resultado de la

operación es el correcto.

11101001 E9 - 23

- - -

01100011 63 99

----------------------------------------------------

10000110 86 -122

CY = 0 S = 1 OV = 0

En el ejemplo se observa lo siguiente:

• Que el resultado de la resta es correcto.

• Que el bit de carry se puso en cero indicando que la resta se pudo realizar sin pido.

• Que el bit de signo del resultado se pone en uno indicando en forma correcta la obtención de un

resultado negativo, minuendo menor que el sustraendo.

• El bit de overflow no se activa asegurando un resultado correcto

h) Minuendo es negativo, sustraendo positivo, la resta produce desborde por lo tanto el resultado de la

operación es incorrecto.

10001101 8D -115

- - -

00010111 17 23

------------ -------- -------

01110110 76 118 (debería ser -138)

CY = 0 S = 0 OV = 1

En el ejemplo se observa lo siguiente:

• Que el resultado de la resta es incorrecto.

• Que el bit de carry se puso en cero indicando que para realizar la resta no se necesito pido.

• Que el bit de signo del resultado se pone en cero indicando en forma incorrecta que el resultado es

positivo.

• El bit de overflow se activa indicando un resultado incorrecto.

Page 49: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 49

El resultado es incorrecto porque se ha sobrepasado el límite de representación para 8 bits, si se desea

obtener el resultado correcto se deberá considerar una representación de 9 bits donde el bit de carry

complementado representa al bit de signo.

Conclusión: En la resta de datos en SRC2 ocurre lo mismo que en la suma de datos en este sistema de

representación, en que la validez del resultado esta dada por el bit de overflow (si OV = 0 resultado

correcto, OV = 1 resultado incorrecto) lo que no sucedía en otros sistemas de representación.

3.3 Operaciones con Datos Decimales

Para poder realizar una suma de datos decimales, los microprocesadores generalmente traen una

instrucción en su repertorio básico, llamada ajuste decimal del acumulador (DAA) para el 8080, esta

instrucción realiza el ajuste del resultado obtenido al sumar dos datos BCD a los fines de que el resultado

quede expresado en decimal codificado binario.

Algunos procesadores en su repertorio básico de instrucciones disponían de una suma decimal lo que

implica un solo código de operaciones para sumar y ajustar.

Algunos procesadores contemplan la posibilidad de realizar el ajuste decimal luego de una operación de

resta, es el caso el Z80, el cual posee un flag interno que indica si la última operación realizada fue suma o

resta, ya que de acuerdo a esto cuando se requiere hacer un ajuste lo hará para la suma o para la resta.

Nota: El ajuste DAA del 8080 solo es válido para la suma.

Para trabajar en aritmética BCD se deben tener en cuenta los siguientes puntos básicos o reglas.

• El flag de signo no cumple ninguna función

• El flag de overflow no cumple ninguna función

3.3.1 Suma en Decimal

Para realizar la suma de dos datos decimales, se debe tener como regla que luego de una operación de

suma, inmediatamente se debe realizar el ajuste con el objeto de no perder los flags.

En el caso de sumar en SRC10 como se especificó, el estado del bit de carry es el encargado de indicar

signo del resultado y desborde.

3.3.2 Resta en Decimal

La resta en decimal en forma directa solo es permitida cuando el procesador contempla el ajuste decimal

con la resta, caso del Z80, en el caso del 8080, 8085 y otros, la resta debe realizarse en forma indirecta,

sumando mediante la utilización de las representaciones de C9 y C10.

Page 50: 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica Binaria.pdf · En esta forma de representación, el número es representado como un vector

MICROPROCESADORES I ARITMETICA BINARIA Ing. Salvador Buscemi, Carlos G. Gil, Ing. Gustavo Ensinck 50

No obstante en algunos casos, el programador podrá utilizar la herramienta que se dispone, un restador

binario para procesar datos decimales, esto es solo bajo estrictas condiciones.

Por Ejemplo:

Obtención del C9 de un dato en BCD.

MVI A,99

SBI 53

Esta secuencia hace 99 - 53 = 46, el resultado de esta diferencia es válido tanto para el sistema

hexadecimal (binario) como para el decimal, nos preguntamos ¿porque?, la respuesta esta dada en que si

no hay pido entre los nibbles, el resultado binario funciona como el restador BCD, el problema es cuando

un nibble pide, ya que en binario pide 16 y en decimal 10.

Por lo tanto es correcto solo bajo la condición indicada anteriormente el uso del restador binario para

restar un dato BCD.

Bajo esta misma condición, se puede utilizar la resta binaria para convertir un dato en BCDEX3 a BCD

natural. Si suponemos que en el acumulador se encuentra un dato en sistema BCDEX3, entonces mediante

la simple instrucción SUI 33, lo convertimos a BCD natural. Esto es válido ya que bajo la hipótesis de que

el dato en el acumulador está en BCDEX3, entonces cada uno de sus dígitos es 3 o mayor que 3, por lo

tanto como en el caso anterior no habrá pido entre nibbles.

Otra utilización del restador binario para procesar datos en código BCD, es cuando se desea conocer si un

dato es mayor, menor o igual a otro. En este caso realizando la resta binaria y analizando el pido (bit de

carry) y el bit de cero, se podrá tener una solución al problema. Pero cuidado si la instrucción utilizada es

una SUB, el resultado obtenido puede ser una aberración desde el punto de vista de la representación

binaria de los dígitos decimales, por lo tanto el resultado debe ser descartado. Quizás por este motivo es

conveniente en estos casos en vez de la instrucción de resta utilizar la de comparación por razones de

prolijidad en la operación.