APENDICE H REVISIÓN DE LA ARITMÉTICA BINARIA Y BCD (DECIMAL CODIFICADO EN BINARIO)
La mayoría de la gente supone que el número 1789 significa mil setecientos ochenta y nueve, ó 1 x 103 + 7 x 102 + 8 x 101 + 9 x 100. Sin embargo, hasta que se defina la base numérica, podría significar
lo que corresponde a hexadecimal, la forma utilizada en un microprocesador.
Para distinguir entre números en diferentes bases, los matemáticos suelen escribir 178910 o simplemente 1789 base 10, o decimal, y 178916 para base 16, o hexadecimal. Debido a que muy pocas computadoras o dispositivos de E/S permiten subíndices, todos los números hexadecimales están precedidos por la notación $. Entonces 1789 significa base 10 y $1789 significa base 16. ¿Por qué hexadecimal? Porque ésta es una forma cómoda de representar 2 dígitos en 8 bits.
El MCS650X es un microprocesador orientado al byte, lo que significa que la mayoría de las operaciones tienen operaciones de 8 bits.
Hay 2 formas de entender 8 bits. El primero es que corresponden a 8 bits individuales en los que 00001000 significa que el bit 3 (bit 7 para la representación) está activado y todos los demás bits están desactivados; o como un número binario de 8 bits, en cuyo caso el valor es
Para fines de análisis lógico, cada bit es único; pero para fines aritméticos, los 8 bits se tratan como un número binario.
Reglas de la Aritmética Binaria:
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 con un Acarreo
El acarreo ocurre cuando el número resultante es demasiado largo para la base. En decimal, 8 + 4 = 2 + 10.
En hexadecimal, $8 + $4 = $C (Ver detalles de la notación hexadecimal), de modo que 8 + 4 tiene un acarreo en base 10 pero no en base 16.
Usando estas reglas para sumar 8 + 2 en binario nos da lo siguiente:
00000010 +2 1 x 21
00001010 10 1 x 23 + 1 x 21
Por lo tanto, cualquier número del 0 al 255 se puede representar en 8 bits y la suma binaria se puede realizar utilizando la ecuación básica de suma binaria, Rj =(Aj ∨ Bj ∨ Cj-1), donde tal como se definió anteriormente, ∨ es la notación de la operación «O Exclusivo».
En la mayoría de las aplicaciones, también es necesario restar. Las operaciones de resta requieren una implementación de hardware diferente o, en su defecto, una nueva forma de representar números.
Una combinación de lo anterior es implementar un inversor simple en cada bit.
Esto produciría
00001100 12 11110011 -12
Sin embargo, al restar 12 con 12, el resultado también debería ser 0.
00001100 +12 11110011 -12 11111111 0
Sin embargo, si se suma el Acarreo al número complementado:
1 Acarreo 00001100 12 11110011 -12 00000000 = 0
Si en lugar de representar -12 como complemento de 12, se representa como complemento más acarreo, se obtiene lo siguiente:
11110011 = 12 1 = Acarreo 11110011 -12 00001100 = +12 00000000 = 0
A esta representación se llama complemento a dos y representa la forma en que se guardan los números negativos en los microcomputadores. A continuación se muestran ejemplos de números negativos representados en forma de complemento a dos.
-0 = 00000000 -1 = 11111111 -2 = 11111110 -3 = 11111101 -4 = 11111100 -5 = 11111011 -6 = 11111010 -7 = 11111001 -S = 11111000 -9 = 11110111
La notación Hexadecimal es la representación de números en base 16. La siguiente tabla muestra las ventajas de esta notación:
Hexadecimal Binario Decimal 0 0000 00 1 0001 01 2 0010 02 3 0011 03 4 0100 04 5 0101 05 6 0110 06 7 0111 07 8 1000 08 9 1001 09 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15
Dado que 16 es múltiplo de 2, la notación hexadecimal es una abreviatura conveniente para la representación de 4 dígitos o bits binarios. Las reglas de la aritmética también se cumplen.
Binario Hexadecimal 0100 1111 4F + 0110 0010 + 62 1011 0001 Bl
Para aprovechar esta abreviatura, todas las direcciones de este manual se muestran en notación hexadecimal. Cabe señalar que el lector deberá aprender a operar en Hexadecimal lo antes posible. La traducción continua a decimal requiere mucho tiempo y es propensa a errores. Trabajar en hexadecimal y binario le obligará rápidamente a aprender la manipulación hexadecimal y a familiarizarse a trabajar con esta cómoda representación.
Aunque muchas operaciones se pueden realizar exitosamente con operaciones binarias, algunas se realizan mejor en modo decimal. Aunque el uso de un carácter decimal por byte sería una forma legítima de resolver este problema, se trata de un uso ineficiente de la capacidad del byte de 8 bits.
El microprocesador permite el uso de representación BCD empaquetada. Esta representación es, en forma de 4 bits:
0 = 0000 1 = 0001 2 = 0010 3 = 0011 4 = 0100 5 = 0101 6 = 0110 7 = 0111 8 = 1000 9 = 1001
En BCD, el número 79 está representado por:
Binario BCD Hexadecimal 01111001 = 79 = 79
El microprocesador tiene esto en cuenta automáticamente y corrige el hecho de que
Decimal BCD Hexadecimal 79 = 01111001 79 = 01111001 +12 = 00010010 12 = 00010010 91 = 10010001 88 = 10001011
La única diferencia entre la representación Hexadecimal y BCD es que el microprocesador se ajusta automáticamente al hecho de que BCD no permite valores hexadecimales de la A a la F durante las operaciones de suma y resta.
El desplazamiento que sigue a una instrucción de bifurcación está en forma de complemento a dos con signo, lo que significa que
$+50 = +80 = 01010000 y $-50 = -80 = 10110000 Prueba = 00000000
El signo de esta operación está en el bit 7, donde un 0 es igual a positivo y un 1 es igual a negativo.
Este bit es correcto para la representación en complemento a dos, pero también indica al microprocesador si debe considerar el acarreo o el préstamo del byte superior de la dirección.
Los siguientes cuatro ejemplos representan las combinaciones de compensaciones (offsets) que pueden ocurrir (Todas las notaciones están en hexadecimal):
Ejemplo H.4.1: Referencia hacia adelante, sin cruce de página
0105 BNE 0106 +55 0107 Siguiente OP CODE
Para calcular la siguiente instrucción, si se tomó la bifurcación:
Offset +55 01010101 Dirección Inferior del siguiente OP CODE 07 00000111 5C 01011100
sin acarreo, dando como resultado 015C.
Ejemplo H.4.2: Referencia hacia atrás, sin cruce de página
015A BNE 015B -55 015C Siguiente OP CODE
Para calcular si se toma la bifurcación,
Offset -55 = AB = 10101011 + Dirección Inferior del Siguiente OP CODE +55 = 5C = 01011100 07 07 00000111
Debido al desplazamiento negativo se espera un acarreo, el que se ignora, lo que nos da como resultado 0107.
Ejemplo H.4.3 : Referencia hacia atrás, con cruce de página
0105 BNE 0106 -55 0107 Siguiente OP CODE
Para calcular si se toma la bifurcación, primero calcule el byte inferior
Offset -55 = AB = 10101011 Dirección Inferior del Siguiente OP CODE 07 = 07 = 00000111 B2 = B2 = 10110010
No hay acarreo de una compensación negativa; por lo tanto, se debe realizar un acarreo:
-1 = -1 = FF = 11111111 + Byte Superior = 01 = 01 = 00000001 00 00 00000000
Esto da como resultado 00 B2.
Ejemplo H.4.4: Referencia hacia adelante, con cruce de página
00B0 BNE 00B1 +55 00B2 Siguiente OP CODE
Para calcular la siguiente instrucción si se toma la bifurcación.
Offset 55 = 01010101 Byte Inferior del Siguiente OP CODE B2 = 10110010 07 00000111
con acarreo de número positivo.
+1 1 = 00000001 Byte Superior 00 = 00000000 1 = 00000001
lo que nos da 0107.