En este hilo voy a comentar un poco como es la programación del Motorola 68000 desde el punto de vista de código máquina.
Escribiré de sus registros, instrucciones y modos de direccionamiento, sus modos de funcionamiento y pondré algún ejemplo sencillo de sumar peras con manzanas y mueve datos de un lugar a otro, que me molestan estos Bits aquí y me dan calor.
El micro Motorola lo desarrolló motorola allá por el año 1979 por recomendación de Jose María García, el del furbol.
Es un micro que tiene un (auto) Bus de datos de 16 plazas, aunque de pié entran 32. (bits)
Dispone de dos modos de funcionamiento; El modo usuario, para los patanes. Y modo supervisor, que puede ejecutar instrucciones que los patanes no pueden, acceder a zonas VIP de la memoria y esas cosas feas y peludas.
El 68000 se alimenta unicamente de +5V (Tensión estabilizada y pausterizada)
Dispone de un Bus de datos triestado de 23 bits (A1-A23).
Salidas FC0, FC1, FC2 que informan del estado del procesador.
Etc..etc.. Todo muy bonito!
Para luego!
Vamos a centrarnos en lo de dentro. Ya habrá tiempo para lo de fuera.
Veamos los registros del 68k
REGISTRO DE ESTADO (SR)
El Registro de estado es donde están los FLAGS o BANDERAS que nos dicen que narices ha pasado después de realizar una determinada instrucción. Es como una madre, aunque no le digas nada, siempre se entera de lo que pasa.
Bien, este registro se llama SR (16 bits) y está compuesto, como casi todos, de las siguientes cositas:
El byte bajo de (SR) se denomina, Registro de Códigos de Condición - CCR y nos informa de los siguiente:
C (Carry) Nos indica el acarreo poniendose a 1. ¡Y me llevo una!
V (oVerflow) nos indica desbordamiento en una operacción aritmética en complemento a dos.
Z (Zero) Se activa a uno si el resultado de algo es igual a cero. Ejemplo: ¿Nuevos juegos de Oric en 2019?... Y se activa!
N (Negative) es cuando una operación nos reporta un resultado negativo. 5 Manzanas - 7 Manzanas= -2 Manzanas
X Es el bit de eXtensión. No cambia con las instrucciones de movimiento de datos. Lo hace con instrucciones aritméticas con signo, desplazamientos y rotación. Y lo hace igual que el de acarreo.
El Byte alto de SR solo es accesible desde el modo Supervisor y contiene los Flags de control del sistema.
I2- I1 - I0, son los bits de máscara de interrupción por niveles.
S Es el bit de modo Usuario, Supervisor
T (Trace) es el bit indicador de modo, paso por paso.
Vamos con los otros registros!!!
REGISTRO DE DATOS (D0-D7)
EN total, ocho registros de 32 bits.
La mayoría de las operaciones de manipulación de datos se efectúa en estos registros.
Son de uso general.
Cualquier operación está permitida.
No existe como en otros micros el ACUMULADOR, donde se realizan todas las operaciones. Aquí se realizan en estos registros.
Bueno... es como si tuviéramos 8 Acumuladores, pero se llaman desde D0 a D7
Estos registros se pueden manipular como 32 bits, 16bits u 8bits, indicando en los códigos mnemotécnicos el .L .W y .B ( Que deben de ser Long Word, Word y Byte)
Cuando se opera sobre una sección del registro (Palabra o Byte), la sección afectada será la de menor peso (bits 0 a 7 o a 15, según)y el resto de bits permanecen o no se consideran.
REGISTRO DE DIRECCIONES (A0 - A7)
El 68k cuenta con 8 registros de direcciones, del A0 al A7. Se consideran como punteros ya que contienen direcciones de datos en la memoria principal.
Los registros son de 32 bits y aunque las operaciones que se realizan son de WORD o LARGUE, si realizamos un cambio en la de menor peso, el registro es afectado por completo. Esto es así porque el contenido de los registro de dirección son valores co signo a dos. Las direcciones negativas se emplean como desplazamientos negativos relativos a una dirección dada.
Todos los registros tienen la misma funcion menos el A7, que es el registro de pila o STACK POINTER (SP)
Aunque el registro sea de 32 bits, solo son significativos los 24 de menor peso. Vamos, que solo direccionamos 16Mb.
CONTADOR DE PROGRAMA (PC)
Es el contador encargado de indicar siempre la dirección de la siguiente instrucción a ejecutar.
Es de 32 bits, aunque solo sabe contar hasta 24 bits, lo de menor peso.
Las "palabras" del micro están formadas por dos bytes consecutivos, por lo que obligatoriamente deben de comenzar en una dirección par de la memoria.
Ya que las palabras son pares, se considera que la señal de direcciones A0 está siempre a cero. Por lo que el 68k solo ve 8Mega palabras de 16 bits.
Por ahora esto...
Siguiente tema serán los modos de direccionamiento.
Salud!
