Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Índice:
Características mas relevantes y recursos disponibles de la CPU08....................................................4
Características de la CPU: ..............................................................................................................4
Modelo de programación de la CPU:..............................................................................................4
Estructura de la CPU08........................................................................................................................4
Registros de la CPU08..........................................................................................................................5
Modos de direccionamiento de la CPU08............................................................................................8
Juego de instrucciones de la CPU08...................................................................................................13
Interrupciones en la CPU08................................................................................................................18
Pag. 2 de 17
CPU08 – Características y modelo de programación.
Características de la CPU:
Estructura de la CPU08.
Pag. 3 de 17
CPU08 – Características y modelo de programación.
CPU08
UNIDAD
UNIDAD DE Bus de direcciones
ARIMETICO
CONTROL
LÓGICA Bus de datos
Control Estado
7 0 Acumulador (A)
Estructura de la CPU08.
Registros de la CPU08.
ACUMULADOR (A).
El acumulador es un registro de propósito general de 8 bits usado por la CPU para guardar
temporalmente los operandos y resultados de las operaciones realizadas.
Es un registro de 16 bits que permite al usuario acceder a los 64 Kbytes del mapa de
memoria mediante direccionamiento indexado. Consta de dos registros de 8 bits, el H y X, que
concatenados forman el H:X de 16 bits siendo H el alto y X el bajo.
Pag. 4 de 17
CPU08 – Características y modelo de programación.
para calcular la dirección efectiva de la variable buscada. Se puede utilizar como índice de 8 bits o
16 bits.
Un reset de la CPU provoca que el Stack Pointer se posicione en 0x00FF pudiendo ser
recolocada posteriormente en cualquier zona de la memoria RAM.
STACK POINTER
0xFF A Se produce un RESET (SP=0xFF)
La pila decrece hacia las direcciones inferiores y crece hacia las direcciones superiores
Utilizando la lógica contraria en el caso de decrecimiento de la pila.
El RESET provoca que el contador de programa se cargue con el contenido del vector de
RESET, que se encuentra en las direcciones 0xFFFE Y 0xFFFF. La dirección representada por el
vector de RESET contendrá la primera instrucción a ejecutar por la CPU.
Pag. 5 de 17
CPU08 – Características y modelo de programación.
La CPU pone a 1 este indicador cuando se produce un acarreo entre los bits 3 y 4 del
acumulador en una suma sin acarreo (ADD) o en una suma con acarreo (ADC).
Este indicador es utilizado en operaciones aritméticas BCD. La instrucción DAA (ajuste
decimal del acumulador) utiliza el estado de los indicadores H y C para determinar el factor
de corrección apropiado.
La CPU pone a 1 este indicador cuando una operación aritmética, operación lógica o
una modificación de datos produce un resultado negativo.
La CPU pone a 1 este indicador cuando una operación aritmética, operación lógica o
una modificación de datos produce el resultado 0x00.
La CPU pone a 1 este indicador cuando una operación de suma o resta produce un
acarreo mas allá del séptimo bit del acumulador. Algunas operaciones lógicas e
instrucciones de transformación de datos también modifican el indicador de acarreo.
La CPU08 utiliza 16 modos de direccionamiento diferentes para poder acceder a los datos.
Estos modos de direccionamiento definen como la CPU busca los datos requeridos para
poder ejecutar una instrucción. Estos son:
1. INHERENTE.
Pag. 6 de 17
CPU08 – Características y modelo de programación.
Ejemplos:
PULA, CLRA, TXA, INCA... ;Empila, borra, transfiere, incrementa... el acumulador.
2. INMEDIATO.
Ejemplos:
SUB #$22 ;Resta el valor inmediato $22 al acumulador.
AIX #1 ;Suma el valor 1 al registro H:X.
3. DIRECTO.
Se utiliza el direccionamiento directo para acceder a los primeros 256 bytes (página
directa o página 0) del mapa de memoria mediante solo un byte de dirección. Se asume
el byte alto de la dirección efectiva como 0x00.
Este método de direccionamiento da lugar a instrucciones mas cortas (2 bytes, uno
para el opcode y otro para la dirección) reduciendo el espacio de memoria ocupado y el
tiempo de ejecución.
Ejemplos:
LDA 0x02 ;Carga en el acumulador el valor del la pos. de memoria
;0x02.
STA 0x01 ;Y posteriormente lo guarda en la pos. de memoria 0x01.
4. EXTENDIDO.
Ejemplos:
LDA 0x8000 ;Carga en el acumulador el valor de la pos. de memoria
;0x8000.
Pag. 7 de 17
CPU08 – Características y modelo de programación.
Los direccionamientos indexados utilizan el registro índice como puntero que contiene
la (o parte de la) dirección del operando a tratar.
El direccionamiento indexado sin offset se utiliza para acceder a cualquiera de los 64
Kbytes del mapa de memoria mediante instrucciones de solo 1 byte de longitud. Para
obtener la dirección de memoria requerida se utiliza el registro índice H:X, donde H
contiene el byte mas significativo y X el menos significativo.
Ejemplos:
LDA ,X ;Carga en el acumulador el valor de la pos. apuntada por el
;registro H:X.
INCX ;Actualiza el registro índice.
STA ,X ;Guarda el valor del acumulador en la pos. apuntada por el
;nuevo valor en H:X.
6. INDEXADO, CON OFFSET DE 8 BIT.
Ejemplos:
LDA off8bit,X ;Carga en el acumulador el valor de la pos. apuntada por H:X
;+ off8bit.
NCX ;Actualiza el registro índice.
STA off8bit,X ;Guarda el valor del acumulador en la pos. apuntada por H:X
;+ off8bit.
Ejemplos:
LDA off16bit,X ;Carga en el acumulador el valor de la pos. apuntada por H:X
;+ off16bit.
INCX ;Actualiza el registro índice.
Pag. 8 de 17
CPU08 – Características y modelo de programación.
STA off16bit,X ;Guarda el valor del acumulador en la pos. apuntada por H:X
;+ off16bit.
Ejemplos:
LDA off8bit,SP ;Carga en el acumulador el valor de la pos. apuntada por SP
;+ off8bit.
TXS ;Actualiza el registro SP.
STA off8bit,SP ;Guarda el valor del acumulador en la pos. apuntada por SP
;+ off8bit.
Ejemplos:
LDA off16bit,SP ;Carga en el acumulador el valor de la pos. apuntada por SP
;+ off16bit.
TXS ;Actualiza el registro SP.
STA off16bit,SP ;Guarda el valor del acumulador en la pos. apuntada por SP
;+ off16bit.
10. RELATIVO.
Ejemplos:
Pag. 9 de 17
CPU08 – Características y modelo de programación.
Ejemplos:
MOV #0,$40 ;Inicializa la dirección 0x40 a 0.
Ejemplos:
MOV $40,$80 ;Mueve el valor almacenado en la dirección 0x40 a la 0x80.
Ejemplos:
MOV X+,$20 ;Mueve el valor apuntado en H:X a la dirección 0x20.
Pag. 10 de 17
CPU08 – Características y modelo de programación.
Ejemplos:
MOV $20,X+ ;Mueve el valor almacenado en 0x20 a la posición apuntada
;por H:X.
Ejemplos:
BUSQ CBEQ X+,ENC ;Compara el valor apuntado por H:X con el
;acumulador y si es igual salta a ENC.
BRA BUSQ ;En caso contrario, sigue buscando.
Ejemplos:
BUSQ CBEQ $20,X+,ENC ;Compara el valor apuntado por (H:X + 0x20) con el
;acumulador y si es igual salta a ENC.
BRA BUSQ ;En caso contrario, sigue buscando.
Pag. 11 de 17
CPU08 – Características y modelo de programación.
● Instrucciones aritméticas.
Pag. 12 de 17
CPU08 – Características y modelo de programación.
● Instrucciones de rotación/desplazamiento.
Pag. 13 de 17
CPU08 – Características y modelo de programación.
Rotación a la derecha a través del indicador de acarreo del contenido de una posición
ROR
de memoria.
● Instrucciones lógicas.
● Instrucciones de test.
JMP Salto.
JSR Salto a subrutina.
RTS Retorno desde subrutina.
BRA Bifurca siempre.
BCC Bifurca si el indicador de acarreo (C) es 0.
BCS Bifurca si el indicador de acarreo (C) es 1.
BEQ Bifurca si igual.
BGE Bifurca mayor o igual que (con signo).
BGT Bifurca si mayor que (con signo).
BHCC Bifurca si el indicador de acarreo medio (H) es 0.
BHCS Bifurca si el indicador de acarreo medio (H) es 1.
BHI Bifurca si mayor que.
BHS Bifurca si mayor o igual que.
BIH Bifurca si IRQ está activa.
Pag. 14 de 17
CPU08 – Características y modelo de programación.
● Instrucciones de control.
Pag. 15 de 17
CPU08 – Características y modelo de programación.
Interrupciones en la CPU08.
Las interrupciones son el medio para suspender la ejecución normal del programa. La
CPU08 puede procesar 128 fuentes de interrupción incluyendo la interrupción software (SWI).
Las interrupciones son generadas por los distintos módulos periféricos del microcontrolador y
son reconocidas, siempre que el bit de máscara de interrupción esté deshabilitado, de acuerdo a
su nivel de prioridad. El módulo periférico indica a la CPU su condición mediante un indicador de
interrupción pendiente. Cuando la ISR sirve la interrupción, el indicador del módulo periférico debe
ser borrado.
Todas las interrupciones tienen asignado un nivel de prioridad lo que permite, ante un
conflicto por petición múltiple, servir antes la que tenga la prioridad mas alta. El módulo
encargado de arbitrar y lanzar las interrupciones es el SIM. Una vez que una interrupción está
siendo servida ninguna otra interrupción la puede interrumpir (independientemente de su
prioridad) a no ser que el bit de máscara de interrupción (I) sea desactivado (I=0).
La CPU08 cuenta con 128 posibles vectores de interrupción, contando el RESET y SWI:
Pag. 16 de 17
CPU08 – Características y modelo de programación.
Pag. 17 de 17