1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica...
Transcript of 1.2 Sistema Numérico Posicional (binario)dea.unsj.edu.ar/mp1/APUNTES/Catedra Aritmetica...
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:
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
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
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
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
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.
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
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:
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
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)
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
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 )
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.
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
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
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.
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:
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)
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
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”.
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.
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
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:
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
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:
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..
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.
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
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:
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).
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:
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
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
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
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
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.
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
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
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.
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:
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.
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:
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.
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. .
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.
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.
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.
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.
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.
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.