ST6 y ST7 son líneas de productos de microcontroladores de 8 bits de STMicroelectronics . Se utilizan comúnmente en pequeñas aplicaciones integradas, como lavadoras .
Aunque utilizan periféricos similares y se comercializan como parte de la misma línea de productos, [1] [2] las dos arquitecturas son en realidad bastante diferentes.
Ambos tienen un acumulador de 8 bits que se utiliza para la mayoría de las operaciones, además de dos registros de índice de 8 bits (X e Y) que se utilizan para el direccionamiento de la memoria. Además, ambos tienen instrucciones de 8 bits seguidas de hasta 2 bytes de operandos, y ambos admiten la manipulación y ramificación de bits individuales de la memoria.
Ahí terminan las similitudes.
El ST6 es una arquitectura Harvard con un espacio de dirección de datos de 8 bits (256 bytes) y un espacio de programa independiente de 12 bits (4096 bytes). Los operandos siempre tienen una longitud de 1 byte y algunas instrucciones admiten dos operandos, como "mover el inmediato de 8 bits a la dirección de memoria de 8 bits". Las llamadas a subrutinas se realizan utilizando una pila de hardware independiente. Los registros de datos (pero no el contador de programa ni los indicadores) se asignan a la memoria.
Los modos de direccionamiento del ST6 están limitados a la dirección de memoria absoluta inmediata de 8 bits y a los modos indirectos de registro (X) e (Y).
El ST7 es una arquitectura de von Neumann con un único espacio de direcciones de 16 bits (64 kiB). Los primeros 256 bytes de RAM (la página cero ) tienen una flexibilidad adicional. No hay instrucciones de dos operandos, excepto "bit de prueba y bifurcación". Sus registros no están mapeados en memoria y utiliza RAM de propósito general (más un registro de puntero de pila ) para llamadas a subrutinas.
El ST7 admite una amplia variedad de modos de direccionamiento, incluidos base+índice y doble indirecto.
El ST6 tiene 64 bytes de RAM y 4096 bytes de ROM de programa . Se puede acceder a cantidades mayores conmutando entre bancos la sección inferior de 2K de la ROM.
El espacio de direcciones de RAM es en realidad de 256 bytes, divididos de la siguiente manera:
No se asignan al espacio de direcciones un contador de programa de 12 bits y una pila de hardware asociada (de cuatro o seis niveles de profundidad, según el modelo). Solo hay dos bits de estado ( acarreo y cero ) y se almacenan en bancos según el modo del procesador, con bits de estado separados para operaciones normales, de interrupción y de interrupción no enmascarable .
Las primeras cuatro ubicaciones de la RAM de propósito general también se conocen como registros X, Y, V y W, y algunas instrucciones pueden acceder a ellas mediante modos de direccionamiento cortos especiales. Los registros X e Y sirven como registros de índice y pueden utilizar modos de direccionamiento indirecto (X)
y (Y)
.
El conjunto de instrucciones consta de un byte de código de operación, seguido de hasta dos operandos de un byte. El conjunto de instrucciones se puede resumir de la siguiente manera:
†: ^ ab Resulta confuso que los distintos modelos de la familia ST6 utilicen distintas convenciones para el valor del bit de acarreo después de una resta. Los procesadores ST60 utilizan la convención de "acarreo", que borra el bit si la resta se desborda, mientras que los procesadores ST62 y ST63 utilizan la convención de "tomar prestado", que establece el bit en ese caso. [3] : 21–22,42
El ST7 tiene seis registros: el acumulador, los registros de índice X e Y, el puntero de pila, el contador de programa y el registro de código de condición. Además, el direccionamiento indirecto doble permite que la página cero de la RAM sirva como registros adicionales. Una característica inusual pero útil es que una interrupción coloca cuatro de estos registros en la pila (A y X, así como los habituales PC y CC), y el retorno de la interrupción los restaura.
Las instrucciones ALU se dividen en dos categorías: de dos operandos y de un operando.
Las instrucciones de dos operandos utilizan el acumulador como primera fuente. El modo de direccionamiento especifica la segunda fuente, que puede ser:
El destino suele ser el acumulador, pero algunas instrucciones modifican la segunda fuente. (Los operandos inmediatos están prohibidos en tales casos).
Las instrucciones de un operando utilizan el operando especificado tanto para el origen como para el destino. El operando puede ser:
El registro más el desplazamiento calcula una suma de ancho completo, por lo que el formato de 8 bits puede abordar una memoria de hasta 255+255 = 510.
Además de lo anterior, hay tres bytes de prefijo que pueden agregarse a cualquier instrucción para la que tengan sentido: