Un ingeniero primero desarrolla un conjunto de instrucciones para el microprocesador en forma de
código mnemotécnico, después usa un ensamblador para traducir estas instrucciones en 'opcodes' para que la
CPU lo pueda entender. En otros capítulos se verán las instrucciones, como escribir un programa y el programa
ensamblador. Sin embargo, ahora solo hay que entender que las personas preparan instrucciones para una
microprocesador en una forma de código mnemotécnico, pero que el microprocesador entiende sólo 'opcodes';
así que, se requiere un paso, la traducción de cambiar los mnemónicos a 'opcodes', que es la función del
ensamblador.
Números Octales
Antes de dejar los sistemas de números y códigos, se ven los dos códigos adicionales de los que se
puede haber oído hablar. El sistema Octal (base 8) se usó para algún trabajo del microprocesador, pero
raramente se usa hoy en día. La anotación Octal usa los números del 0 al 7, representados en tres dígitos
binarios, lo mismo que en hexadecimal se representan en cuatro dígitos binarios. El sistema octal tiene la ventaja
de usar los mismos símbolos de los números decimales, a diferencia de los símbolos hexadecimales, que añaden
de la A a la F.
Los dos motivos que causaron el abandono del sistema octal en favor del hexadecimal fueron: En
primer lugar, la mayoría de microprocesadores usan palabras de 4, 8, 16, o 32 bits; estas palabras no se pueden
agrupar en grupos de tres bits. Algunos de los primeros microprocesadores usaron palabras de 12-bits agrupados
en tres bits cada uno. En segundo lugar el sistema octal no es tan compacto como el hexadecimal; por ejemplo, el
valor en ASCII para la letra mayúscula A es 1000001
Cuando un programador está hablando sobre el valor ASCII de la letra A, es más fácil decir "cuatro y uno" que
decir "uno cero uno".
La
Tabla 3
muestra la equivalencia entre el sistema octal y el binario. La columna "binario directo"
muestra la equivalencia dígito por dígito, con los dígitos de la columna "octal" en grupos de tres bits binarios. El
bit de más a la izquierda (el noveno) se muestra escrito en negrita. Este bit se desecha para hacer los deseados 8-
bits. La columna "binario 8-bits" tiene la misma información binaria que la columna "binario directo",
exceptuando que los bits se reagrupan en cuatro bits. Cada grupo de cuatro bits equivale a un dígito hexadecimal.
Al traducir mentalmente los valores de octal a binario, el valor octal se representa con tres dígitos. Con
cada dígito octal representado con grupos de tres bits binarios, hay un bit de más, (3 dígitos x 3 bits = 9 bits).
Entonces es fácil olvidarse de quitar el bit de más y terminar con un bit extra (el bit noveno). Al traducir de
hexadecimal a binario, es más fácil porque cada dígito hexadecimal equivale exactamente a cuatro bits binarios.
Dos dígitos hexadecimales exactamente iguales de ocho bits binarios en un byte.
Octal
Binario directo Binario 8 bits
000
000 000 000
001
000 000 001
002
000 000 010
003
000 000 011
004
000 000 100
005
000 000 101
006
000 000 110
007
000 000 111
010
000 001 000
011
000 001 001
012
000 001 010
013
000 001 011
014
000 001 100
015
000 001 101
016
000 001 110
017
000 001 111
101
001 000 001
125
001 010 101
252
010 101 010
377
011 111 111
Tabla 3. Equivalencias entre Octal, Binario, y Hexadecimal
(en binario), 41
(en hexadecimal) y 101
2
16
Hexadecimal
0000 0000
$00
0000 0001
$01
0000 0010
$02
0000 0011
$03
0000 0100
$04
0000 0101
$05
0000 0110
$06
0000 0111
$07
0000 1000
$08
0000 1001
$09
0000 1010
$0A
0000 1011
$0B
0000 1100
$0C
0000 1101
$0D
0000 1110
$0E
0000 1111
$0F
0100 0001
$41
0101 0101
$55
1010 1010
$AA
1111 1111
$FF
16
(en octal).
8