TABLA DE CONTENIDOS

CAPÍTULO 1 NOTAS INTRODUCTORIAS


1.0 Introducción al Manual
1.1 La Arquitectura del Microprocesador


CAPÍTULO 2 EL BUS DE DATOS, EL ACUMULADOR Y LA UNIDAD ARITMÉTICA LÓGICA


2.0 El Bus de Datos
2.1 El Acumulador
2.1.1 LDA-Cargar en el Acumulador el Contenido de una Dirección de Memoria
2.1.2 STA-Almacenar en una Dirección de Memoria el Contenido del Acumulador
2.2 La Unidad Aritmética Lógica
2.2.1 ADC-Sumar al Acumulador el Contenido de una Dirección de Memoria, Con Acarreo
2.2.1.0 Suma de Precisión Múltiple
2.2.1.1 Aritmética con Signos
2.2.1.2 Suma Decimal
2.2.1.3 Resumen de las Sumas
2.2.2 SBC-Restar al Acumulador el Contenido de una Dirección de Memoria, Con Préstamo
2.2.2.0 Resta de Precisión Múltiple
2.2.2.1 Aritmética con Signos
2.2.2.2 Resta Decimal
2.2.3 El Acarreo y el Desbordamiento Durante las Operaciones Aritméticas
2.2.4 Los Operadores Lógicos
2.2.4.1 AND-"Y" Lógico Entre la Memoria y el Acumulador
2.2.4.2 ORA-"O" Lógico Entre la Memoria y el Acumulador
2.2.4.3 EOR-"O exclusivo" Lógico Entre la Memoria y el Acumulador


CAPÍTULO 3 LAS BANDERAS Y EL REGISTRO DE ESTADO


3.0 La Bandera de Acarreo ©
3.0.1 SEC-Puesta a 1 de la Bandera de Acarreo
3.0.2 CLC-Puesta a 0 de la Bandera de Acarreo
3.1 La Bandera Cero (Z)
3.2 La Bandera de Desactivación de la Interrupción (I)
3.2.1 SEI-Puesta a 1 de la Desactivación de la Interrupción
3.2.2 CLI-Puesta a 0 de la Desactivación de la Interrupción
3.3 La Bandera de Modo Decimal (D)
3.3.1 SED-Puesta en Modo Decimal
3.3.2 CLD-Puesta a 0 del Modo Decimal
3.4 La Bandera del Comando BREAK (B)
3.5 El Bit de Expansión
3.6 La Bandera de Desbordamiento (V)
3.6.1 CLV-Puesta a 0 de la Bandera de Desbordamiento
3.6.2 Determinación del Desbordamiento
3.7 La Bandera Negativo (N)
3.8 Resumen de las Banderas


CAPÍTULO 4 LAS INSTRUCCIONES DE COMPROBACIÓN, BIFURCACIÓN Y SALTO


4.0 La Secuencia del Programa
4.0.1 Uso del Contador de Programa para Obtener una Instrucción
4.0.2 JMP-Saltar a una Nueva Posición de Memoria
4.1 Bifurcación
4.1.1 El Direccionamiento Relativo
4.1.2 Las Instrucciones de Bifurcación
4.1.2.1 BMI-Bifurcar Si el Resultado es Negativo
4.1.2.2 BPL-Bifurcar Si el Resultado es Positivo
4.1.2.3 BCC-Bifurcar Si la Bandera de Acarreo © es igual a 0
4.l.2.4 BCS-Bifurcar Si la Bandera de Acarreo © es igual a 1
4.1.2.5 BEQ-Bifurcar Si el Resultado es igual a 0
4.1.2.6 BNE-Bifurcar Si el Resultado es distinto de 0
4.1.2.7 BVS-Bifurcar Si la Bandera de Desbordamiento (V) es igual a 1
4.1.2.8 BVC-Bifurcar Si la Bandera de Desbordamiento (V) es igual a 0
4.1.3 Resumen de las Bifurcaciones
4.1.4 Solución a la Bifurcación Fuera de Rango
4.2 Instrucciones de Comprobación
4.2.1 CMP-Comparar el Contenido de una Dirección de Memoria con el Acumulador
4.2.2 Comparación de Bits
4.2.2.1 BIT-Comparar los Bits del Contenido de una Dirección de Memoria con los del Acumulador


CAPÍTULO 5 TÉCNICAS DE DIRECCIONAMIENTO SIN ÍNDICES


5.0 Técnicas de Direccionamiento
5.1 La Segmentación de Instrucciones (Pipelining) y la Secuencia del Programa
5.2 Utilización de la Memoria
5.2.1 Control de E/S
5.2.2 Asignación de Memoria
5.3 Direccionamiento Implícito
5.4 Direccionamiento Inmediato
5.5 Direccionamiento Absoluto
5.6 Direccionamiento de Página Cero
5.7 Direccionamiento Relativo


CAPÍTULO 6 LOS REGISTROS ÍNDICE Y EL DIRECCIONAMIENTO INDEXADO


6.0 Concepto General de Indexado
6.1 Direccionamiento Indexado Absoluto
6.2 Direccionamiento Indexado de Página Cero
6.3 Direccionamiento Indirecto
6.4 Direccionamiento Indirecto Indexado
6.5 Direccionamiento Indexado Indirecto
6.6 Direccionamiento Absoluto Indirecto
6.7 Aplicación de los Índices


CAPÍTULO 7 LAS INSTRUCCIONES DE LOS REGISTROS ÍNDICE


7.0 LDX-Cargar el Registro Índice X con el Contenido de una Dirección de Memoria
7.1 LDY-Cargar el Registro Índice Y con el Contenido de una Dirección de Memoria
7.2 STX-Almacenar el Registro Índice X en una Dirección de Memoria
7.3 STY-Almacenar el Registro Índice Y en una Dirección de Memoria
7.4 INX-Incrementar en Uno el Registro Índice X
7.5 INY-Incrementar en Uno el Registro Índice Y
7.6 DEX-Decrementar en Uno el Registro Índice X
7.7 DEY-Decrementar en Uno el Registro Índice Y
7.8 CPX-Comparar del Registro Índice X con el Contenido de una Dirección de Memoria
7.9 CPY-Comparar del Registro Índice Y con el Contenido de una Dirección de Memoria
7.10 Transferencias Entre los Registros Índice y el Acumulador
7.11 TAX-Transferir el Contenido del Acumulador al Índice X
7.12 TXA-Transferir el Contenido del Índice X al Acumulador
7.13 TAY-Transferir el Contenido del Acumulador al Índice Y
7.14 TYA-Transferir el Contenido del Índice Y al Acumulador
7.15 Resumen del Manejo de los Registros Índice


CAPÍTULO 8 EL PROCESAMIENTO DE LA PILA


8.0 Introducción a la Pila y al Concepto de Empuje (Push) Hacia Abajo
8.1 JSR-Saltar a la Subrutina
8.2 RTS-Regresar Desde la Subrutina
8.3 Implementación de la Pila en los Microprocesadores del MCS6501 al MCS6505
8.3.1 Resumen de la Implementación de la Pila
8.4 Uso de la Pila por Parte del Programador
8.5 PHA-Introducir (Push) el Contenido del Acumulador en la Pila
8.6 PLA-Extraer (Pull) el Contenido del Acumulador desde la Pila
8.7 Uso de las Instrucciones Push (Introducir) y Pull (Extraer) para Comunicar Variables entre Operaciones de Subrutina
8.8 TXS-Transferir el Registro Índice X al Puntero de la Pila
8.9 TSX-Transferir el Puntero de la Pila al Registro Índice X
8.10 Almacenamiento del Registro de Estado del Procesador
8.11 PHP-Introducir el Registro de Estado del Procesador en la Pila
8.12 PLP-Extraer el Registro de Estado del Procesador desde la Pila
8.13 Resumen de la Pila


CAPÍTULO 9 CONSIDERACIONES SOBRE EL RESTABLECIMIENTO (RESET) Y LAS INTERRUPCIONES


9.0 Vectores
9.1 Restablecer (Reset) o Reiniciar (Restart)
9.2 La Función de Inicio
9.3 Consideraciones del Programador para las Secuencias de Inicialización
9.4 Reinicio
9.5 Consideraciones Sobre las Interrupciones
9.6 RTI-Regresar Desde la Interrupción
9.7 Sondeo (Polling) de Software Para las Causas de las Interrupciones
9.8 Interrupciones Completamente Vectorizadas
9.8.1 JMP Indirecto
9.9 Resumen de las Interrupciones
9.10 Interrupción No Enmascarable
9.11 BRK-Instrucción Break
9.12 Mapa de Memoria


CAPÍTULO 10 LAS INSTRUCCIONES DE DESPLAZAMIENTO Y MODIFICACIÓN DE LA MEMORIA


10.0 Definición de Desplazamiento (Shift) y Rotación (Rotate)
10.1 LSR-Desplazamiento Lógico a la Derecha
10.2 ASL-Desplazamiento Aritmético a la Izquierda
10.3 ROL-Rotar a la Izquierda
10.4 ROR-Rotar a la Derecha
10.5 El Direccionamiento por Acumulador
10.6 Instrucciones de Lectura/Modificación/Escritura
10.7 INC-Incrementar en Uno el Contenido de una Dirección de Memoria
10.8 DEC-Decrementar en Uno el Contenido de una Dirección de Memoria
10.9 Notas Generales Sobre las Instrucciones de Lectura/Modificación/Escritura


CAPÍTULO 11 PROGRAMACIÓN DE PERIFÉRICOS


11.0 Revisión del MCS6520 y las Operaciones de E/S
11.1 El Control de las Interrupciones en el MCS6520
11.2 Trucos de Implementación para el Uso de la Interfaz de Periféricos MCS6520
11.2.1 Secuencias de Sondeo (Polling) de Acceso Directo
11.2.2 Organización de los Bits en el MCS6520
11.2.3 Uso de las Instrucciones de Lectura/Modificación/Escritura para la Codificación del Teclado
11.3 Programación del MCS6530
11.3.1 Lectura del Registro Contador
11.4 Cómo Organizarse para Implementar la Codificación
11.4.1 Estándares de Etiquetas
11.5 Programa Completo de E/S

ANEXOS


A. Lista de Instrucciones, Alfabética por Mnemónico, Definición de Grupos de Instrucciones


Conjunto de Instrucciones del Microprocesador del MCS6501 al MCS6505 – Secuencia Alfabética
A.1 Introducción
A.2 Instrucciones del Grupo Uno
A.3 Instrucciones del Grupo Dos
A.4 Instrucciones del Grupo Tres


B. Lista de Instrucciones, Alfabética por Mnemónico, con Códigos de Operación (OP CODE), Ciclos de Ejecución y Requisitos de Memoria


C. Modos de Direccionamiento de las Instrucciones y Tiempos de Ejecución Relacionados


D. Listado de Códigos de Operación de las Instrucciones – Secuencia Hexadecimal


E. Resumen de los Modos de Direccionamiento


E.1 Direccionamiento Implícito
E.2 Direccionamiento Inmediato
E.3 Direccionamiento Absoluto
E.4 Direccionamiento de Página Cero
E.5 Direccionamiento Relativo
E.6 Direccionamiento Indexado Absoluto
E.7 Direccionamiento Indexado de Página Cero
E.8 Direccionamiento Indirecto Indexado
E.9 Direccionamiento Indexado Indirecto


F. Modelo de Programación de la Familia MCS650X


G. Discusión: Direccionamiento Indirecto


H. Revisión de la Aritmética Binaria y BCD (Decimal Codificado en Binario)

LISTA DE EJEMPLOS


CAPÍTULO 2 EL BUS DE DATOS, EL ACUMULADOR Y LA UNIDAD ARITMÉTICA LÓGICA


2.1 Sumar Dos Números con Acarreo, Sin Generación de Acarreo
2.2 Sumar Dos Números con Acarreo, Con Generación de Acarreo
2.3 Sumar Dos Números de 16 bits
2.4 Sumar Dos Números de 16 bits, Sin Acarreo Desde la Suma de Orden Inferior
2.5 Sumar Dos Números de 16 bits, Con Acarreo Desde la Suma de Orden Inferior
2.6 Sumar Dos Números Positivos, Sin Desbordamiento
2.7 Sumar Dos Números Positivos, Con Desbordamiento
2.8 Sumar Un Número Positivo y Uno Negativo, Con Resultado Positivo
2.9 Sumar Un Número Positivo y Uno Negativo, Con Resultado Negativo
2.10 Sumar Dos Números Negativos, Sin Desbordamiento
2.11 Sumar Dos Números Negativos, Con Desbordamiento
2.12 Suma Decimal
2.13 Restar Dos Números Con Préstamo, Con Resultado Positivo
2.14 Restar Dos Números Con Préstamo, Con Resultado Negativo
2.15 Restar Dos Números de 16 bits
2.16 Resta en Formato de Doble Precisión, Con Resultado Positivo
2.17 Resta en Formato de Doble Precisión, Con Resultado Negativo
2.18 Resta Decimal
2.19 Borrar un Bit Usando la Instrucción «AND»
2.20 Establecer un Bit Usando la Instrucción «OR»
2.21 Complementar un Byte Usando la Instrucción «EOR»


CAPÍTULO 4 LAS INSTRUCCIONES DE COMPROBACIÓN, BIFURCACIÓN Y SALTO


4.1 Acceder a las Instrucciones Usando el Valor del Contador P
4.2 Acceder al Direccionamiento de Datos Usando el Valor del Contador P
4.3 Uso de la Instrucción JMP
4.4 Ilustración de «Bifurcar Si se Establece la Bandera de Acarreo»
4.5 Secuenciación de Dos Instrucciones de Salto
4.6 Uso de JMP para Saltar Fuera del Rango
4.7 Uso de la Instrucción CMP
4.8 Programa de Muestra Utilizando la Instrucción de Comparación BIT


CAPÍTULO 5 TÉCNICAS DE DIRECCIONAMIENTO SIN ÍNDICES


5.1 Uso del Direccionamiento Absoluto
5.2 Demostración de la Segmentación de Instrucciones (Pipelining)
5.3 Ilustración del Direccionamiento Implícito
5.4 Ilustración del Direccionamiento Inmediato
5.5 Ilustración del Direccionamiento Absoluto
5.6 Ilustración del Direccionamiento de Página Cero
5.7 Ilustración del Direccionamiento Relativo, Cuando No Se Toma una Bifurcación
5.8 Ilustración del Direccionamiento Relativo, Cuando Se Toma una Bifurcación Positiva; Sin Cruce de Límite de Página
5.9 Ilustración del Direccionamiento Relativo, Cuando Se Toma una Bifurcación Negativa; Con Cruce de Límite de Página


CAPÍTULO 6 LOS REGISTROS ÍNDICE Y EL DIRECCIONAMIENTO INDEXADO


6.1 Mover Cinco Bytes de Datos Usando Código en Línea Recta
6.2 Mover Cinco Bytes de Datos Usando un Bucle
6.3 Detalle de la Programación del Movimiento de Campos Usando un Bucle
6.4 Mover Cinco Bytes de Datos Usando un Registro Índice
6.5 Mover Cinco Bytes de Datos Usando la Disminición de un Registro Índice
6.6 Direccionamiento Indexado Absoluto; Sin Cruce de Límite de Página
6.7 Direccionamiento Indexado Absoluto; Con Cruce de Límite de Página
6.8 Ilustración del Indexado de Página Cero
6.9 Demostración del Rodeo (Wrap-Around)
6.10 Ilustración del Direccionamiento Indirecto Indexado
6.11 Direccionamiento Indexado Indirecto; Sin Cruce de Límite de Página
6.12 Direccionamiento Indexado Indirecto; Con Cruce de Límite de Página
6.13 Suma Indexada Absoluta – Programa de Ejemplo
6.14 Suma Indexada Indirecta – Programa de Ejemplo
6.15 Mover N Bytes (N < 256)
6.16 Mover N Bytes (N > 256)


CAPÍTULO 8 EL PROCESAMIENTO DE LA PILA


8.1 Mapa Básico de la Pila para Secuencia de Salto a Subrutina de Profundidad 3
8.2 Funcionamiento Básico de la Pila
8.3 Ilustración de la Instrucción JSR
8.4 Ilustración de la Instrucción RTS
8.5 Mapa de Memoria de la Instrucción RTS
8.6 Ampliación del Mapa de Memoria de la Instrucción RTS
8.7 Subrutina «Call-a-move» Usando Posiciones de Memoria Preasignadas
8.8 Operación de PHA, Asumiendo que la Pila Se Encuentra en 01FF
8.9 Operación PLA de la Pila del Ejemplo 8.8
8.10 Subrutina «Call-a-move» Usando la Pila Para Comunicarse
8.11 Salto a Subrutina (JSR) Seguido de Parámetros


CAPÍTULO 9 CONSIDERACIONES SOBRE EL RESTABLECIMIENTO (RESET) Y LAS INTERRUPCIONES


9.1 Ilustración del Ciclo de Inicio
9.2 Secuencia de Interrupción
9.3 Retorno Desde la Interrupción
9.4 Ilustración de Guardar y Restaurar para Interrupciones
9.5 Sondeo (Polling) de Interrupciones
9.6 Ilustración de un JMP Indirecto
9.7 Procesamiento de la Interrupción «break»
9.8 Parchado de una PROM usando «break»


CAPÍTULO 10 INSTRUCCIONES DE DESPLAZAMIENTO Y MODIFICACIÓN DE LA MEMORIA


10.1 Desplazamiento y Rotación General
10.2 Rotar el Acumulador a la Izquierda
10.3 Rotar Memoria a la izquierda, Usando Direccionamiento Absoluto, X
10.4 Mover un Nuevo Número BCD a un Campo


CAPÍTULO 11 PROGRAMACIÓN DE PERIFÉRICOS
11.1 El Mapa de Registros del MCS6520
11.2 Inicialización General de la PIA
11.3 Configuración del Modo de Interrupción
11,4 Control de Salida CA2, CB2
11.5 Rutina Para Cambiar CA2 o CB2 Usando el Bit de Control 3
11.6 Sondeo del MCS6520
11.7 Codificación del «Strobe» en un Teclado de 8 x 8
11.8 Sondeo de la Señal Activa

LISTA DE IMÁGENES


CAPÍTULO 2 EL BUS DE DATOS, EL ACUMULADOR Y LA UNIDAD ARITMÉTICA LÓGICA


2.1 Diagrama de Bloques Parcial del MCS650X
2.2 Diagrama de Bloques Parcial que Incluye la Unidad Aritmética Lógica del MCS650X
2.3 Orientación de los Bytes con Posición de Signo


CAPÍTULO 3 LAS BANDERAS Y EL REGISTRO DE ESTADO
3.1 Diagrama de Bloques Parcial del MCS650X, Incluido el Registro-P
3.2 Registro «P» de Estado del Procesador


CAPÍTULO 4 LAS INSTRUCCIONES DE COMPROBACIÓN, BIFURCACIÓN Y SALTO


4.1 Diagrama de Bloques Parcial del MCS650X, Incluidos el Contador de Programa y el Bus de Direcciones Interno
4.2 Uso de la Prueba Condicional


CAPÍTULO 5 TÉCNICAS DE DIRECCIONAMIENTO SIN ÍNDICES


5.1 El Bus de Direcciones y su Relación con los Campos de Memoria
5.2 Ejemplo de Temporización: Familia del MCS650X


CAPÍTULO 6 LOS REGISTROS ÍNDICE Y EL DIRECCIONAMIENTO INDEXADO


6.1 Diagrama de Flujo – Mover Cinco Bytes de Datos Usando un Bucle
6.2 Mover Cinco Bytes de Datos Usando un Contador
6.3 Diagrama de Bloques Parcial del MCS650X, Incluídos los Registros Índice
6.4 Direccionamiento Indirecto – Ilustración
6.5 Direccionamiento Indirecto Indexado
6.6 Direccionamiento Indexado Indirecto


CAPÍTULO 8 EL PROCESAMIENTO DE LA PILA


8.1 Diagrama de Bloques Parcial de MCS650X, Incluido el Puntero de la Pila «S»


CAPÍTULO 10 LAS INSTRUCCIONES DE DESPLAZAMIENTO Y MODIFICACIÓN DE LA MEMORIA


10.1 Diagrama Para Mover un Nuevo Número BCD


CAPÍTULO 11 PROGRAMACIÓN DE PERIFÉRICOS


11.1 Diagrama de Codificación de una Matriz de Teclado
11.2 Secuencia del Strobe del Teclado
11.3 Flujo del Programa para Sondeo (Polling) de la Señal Activa