El Z80 es un microprocesador de la empresa Zilog Inc., que surgió de personas que desarrollaron el 8080 en INTEL, por lo que mantiene cierta compatibilidad con este pero mejorando notablemente sus prestaciones. Contiene íntegramente todo el conjunto de instrucciones del 8080 más una expansión adicional de 80 instrucciones de ahí se deriva su nombre, su repertorio suma un total de 156 instrucciones Tuvo gran éxito y se hizo muy popular desde su aparición, por su incorporación al Spectrum y su utilización en muchos otros sistemas, además de ser el microprocesador alrededor del cual se diseñó el sistema operativo CP/M. • • • • Cuando Zilog anunció por primera vez, en 1976, sus intenciones de producir el Z-80 como alternativa al 8080, hubo un gran escepticismo entre los usuarios de microprocesadores porque creían que el software no iba a ser compatible con el del 8080. Muchos pensaron que el Z-80 seguiría el mismo camino que el 6800 de Motorola y el 6502 de Mos Technology, que sólo habían superado al 8080 en teoría. Sin embargo, tales temores desaparecieron en cuanto se comprobó que el Z-80 era realmente compatible con el microprocesador 8080. Además Zilog consiguió reducir la alimentación a 5 voltios; incluir un reloj, a 250 nsg, frente a los 500 nsg del 8080; incorporar una lógica automática de refresco de memoria dinámica RAM; añadir un terminal adicional para interrupciones no enmascarables; aplicar una filosofía más sencilla para controlar la lectura/escritura, y, por último, implementar una lógica para controlar el bus y demanda de bus para DMA simplificado. Así pues, Zilog, propiedad de Exxon, se convirtió en la compañía con el mejor micropocesador del mundo. La consecución de este logro de Zilog animó a Intel y Motorola a continuar sus investigaciones en el campo de los micropocesadores. El esfuerzo de estas dos compañías obtuvo su fruto; Motorola sacó su micropocesador 6809 e Intel revolucionó el mundo de la microelectrónica sacando a la luz el primer micropocesador de 16 bits. • • • • Bus de datos de 8 bits Bus de direcciones de 16 bits En total 18 registros de 8 bits y 4 de 16 bits 12 registros de 8 bits que se pueden usar en pares para formar 6 de 16 bits • Clock de 4 MHz • Compatible en software con el 8080A • Fuente de Alimentación de 5v Posee un Encapsulado DIP con 40 patas. 5 de entrada, 24 de salida, 8 bidireccionales, 2 para la fuente de alimentación y 1 para entrada del reloj Todas tienen características eléctricas compatibles con TTL. • Tiene 18 registros de 8 bits y 4 de 16 bits. Incluye 2 grupos de 6 registros de propósito general que pueden ser usados individualmente como registros de 8 bits o en parejas como registros de 16 bits. También hay registros de acumuladores y banderas. • Program Counter (PC): Es de 16 bits y contiene la dirección de la instrucción que se debe buscar en la memoria. • Stack Pointer (SP): Es de 16 bits y contiene la dirección del top actual de la pila. • Registros Índice (IX, IY): son dos registros independientes que contienen los 16 bits de direcciones que se usan en modos de direccionamiento indexado. En este modo, un registro índice se usa como base para apuntar a una región en memoria en la cual el dato será almacenado o recuperado. • Interrupt Page Address Register (I): El Z80 puede operar en un modo donde cualquier posición de memoria puede lograrse en respuesta de una interrupción. Este registro se usa para almacenar los 8 bits más significativos de la dirección, mientras el periférico que interrumpe provee los 8 bits menos significativos. Esto da la posibilidad de que las rutinas de interrupción sean localizadas dinámicamente en cualquier parte de la memoria con un mínimo tiempo de acceso a la rutina. • Memory Refresh Register (R): Se usa para el refresco de DRAM. Siete bits de este registro de 8 bits son incrementados automáticamente después de cada búsqueda de instrucción. El octavo bit permanecerá según se programó con la instrucción LD R,A. Se pone en la parte baja del bus de direcciones solo sus 7 bits menos significativos, además en la parte alta del bus se pone el contenido del registro I. • El Z80 tiene 2 registros acumuladores independientes de 8 bits y 2 registros de banderas asociados a los 2 acumuladores. Los acumuladores almacenan los resultados de operaciones aritméticas o lógicas de 8 bits, y los registros de banderas indican condiciones para operaciones de 8 y 16 bits. El programador puede usar el par acumulador-bandera que desee y puede cambiar al otro par con una simple instrucción de intercambio. • Hay 2 grupos de registros de propósito general. Cada grupo contiene 6 registros de 8 bits que pueden ser usados individualmente como registros de 8 bits o en parejas como registros de 16 bits. Un grupo se llama BC, DE y HL y el otro BC’, DE’ y HL’. El programador puede cambiar a cualquiera de los dos grupos de registros con una simple instrucción de intercambio. • En sistemas donde se requieren respuestas a interrupciones rápidas, se reserva un grupo de estos registros y un par acumulador-banderas para intercambiarlos cuando viene la interrupción, quedando salvado el estado de los registros en el otro conjunto sin tener que guardarlos en la pila. • Las operaciones del CPU Z80 se realizan con un grupo de dispositivos lógicos conocidos comúnmente como unidad aritmética y lógica (ALU) esta efectúa las siguientes operaciones. • 1. Suma binaria. 2. Operaciones lógicas. 3. Complementar a dos. 4. Corrimiento de un bit a la derecha o a la izquierda. 5. Registro de resultados importantes como el acarreo, signo, acarreo auxiliar, paridad o si el resultado es zero. 6. Comparaciones 7. Poner, Limpiar o probar un bit El Z80 puede direccionar 256 puertos de entrada/salida. El sistema cuenta con tres localidades de E/S de uso general: – localidad C016 – localidad C116 – localidad C316 C11 dispositvo E/S número 0 dispositvo E/S número 1 control dispositivos C016 y • La memoria esta organizada en palabras de 8 bits (1 byte). • Cada palabra puede ser referenciada por una dirección binaria de 16 bits • La capacidad de direccionamiento directo total es de 65,536 bytes (64 K) de memoria. • La memoria puede ser cualquier combinación de ROM, EPROM o PROM Modo Inmediato: En este modo el byte que sigue al código de operación contiene el operando. Modo Inmediato Extendido: Igual que el Inmediato pero el operando es de 2 bytes. Modified Page Zero Addressing: Lo usa una instrucción CALL especial de 8 bytes solamente, que puede "llamar" a 8 posiciones de la página cero de memoria. Esta instrucción pone la dirección efectiva (en página cero) en el PC. Con esta instrucción de solo 8 bits se logra una dirección de 16 bits donde estarán ubicadas las subrutinas más usadas, permitiendo un ahorro de memoria. Modo Relativo: Usa un byte de dato seguido al código de operación para especificar el desplazamiento del salto. El salto es de 8 bits signado (-128 a 127). Modo Extendido: Provee 2 bytes de datos que pueden usarse para salto o como una dirección donde estará ubicado el operando. Permite saltar a cualquier dirección de memoria o cargar o grabar datos en cualquier posición de memoria. Modo Indexado: El byte de datos que sigue al código de operación contiene un desplazamiento que es agregado a uno de los dos registros índice (IX o IY según indique el código de operación). El contenido del registro índice no se altera. Modo de Direccionamiento por Registros: Cuando la instrucción invoca a registros de 8 bits. Modo Implícito Modo Indirecto a Registros: Especifica un registro de 16 bits para ser usado como puntero. Modos de Direccionamiento Combinados: Algunas instrucciones permiten 2 modos de direccionamiento al mismo tiempo. 1. Recibir datos desde la memoria. 2. Enviar datos hacia la memoria. 3. Incrementar o decrementar en uno su contenido. 4. Formar una dirección con el contenido de un par de registros. 5. Transferir datos entre los registros. 6. Obtener un operando durante las funciones de la ALU Contiene íntegramente todo el conjunto de instrucciones del 8080 más una expansión adicional de 80 instrucciones de ahí se deriva su nombre, su repertorio suma un total de 156 instrucciones M n em ó n ico A cció n ADC ADD AND B IT CALL CCF CP CPD CPD R CPI C P IR CPL DAA DEC DI D JN Z su m a co n carry su m a an d log ico p ru eba d e b it llam ad a a u n a su bru tin a b and era d e co m p lem en taria d e carry co m p aració n co m p aració n y d ecrem en to co m p aració n, decrem en to y repetició n co m p aració n e in crem en to co m p aració n in crem en to y rep etición co m p lem en t accu m u lato r d ecim al ad ju st accu m u lato r d ecrem en to d esh ab ilitar in stru ccion es d ec ju m p non -zero EI h ab ilitar in terrup cio n es M n em ó n ico A cció n EX EXX HALT IM IN IN C IN D IN D R IN I IN IR JP JR LD LDD LDDR LDI in tercam b io d e un p ar d e reg istro s in tercam b io d e reg istro s altern os h alt, esp erar p o r in terru p ció n o reset in terru p ció n m o d o 0 1 2 en trad a d el pu erto in crem en to in pu t, d ec H L , d ec B in pu t, d ec H L , d ec B , rep etir si (B > 0) in pu t, in c H L , dec B in pu t, in c H L , dec B , rep etir si (B > 0) salto salto relativ o carg ar d ato s a/d esd e los reg istro s carg ar, d ecrem en tar carg ar, d ecrem en tar y rep etir carg ar e in crem en tar L D IR carfar, in crem en tar y rep etir M n em ó n ico A cció n NEG NOP OR OTDR O T IR OUT O U TD PO P PU SH RES RET RETI RETN RL RLA RLC n eg ació n acu m u lad or con co m p lem en to s a 2 s n o op eración -o u tp u t, d ec H L , dec B , rep etir si (B > 0) o u tp u t, in c H L , dec B , rep etir si (B > 0 ) salid a a u n pu erto o u tp u t, in c H L , dec B , p op d el stack p u sh en el stack resetear el b it regresar d e un a sub ru tin a regresar d e un a in terrup ción regresar d e un a in terrup ción n o-en m ascarad a ro tación izq u ierd a d e un reg istro ro tación izq u ierd a del acu m u lad o r ro tación izq u ierda a trav és del carry RLCA ro tación izq u ierd a a trav és del carry acu m u lad o r M n em ó n ico A cció n RLD RR RRA RRC RRCA RRD RST SBC SCF SET SLA SRA SRK SU B XOR ro tación izq u ierd a del díg ito ro tación d erecha d e un reg istro ro tación d erecha del acu m u lad o r ro tación d erecha reg istro circu lar ro tación d erecha del acu m u lad o r circu lar ro tación d erecha del díg ito rein icializar su b traer con carry activ ar la b and era de carry asig n ar u n v alo r al b it co rrim ien to izq u ierd o del reg istro aritm ético co rrim ien to d erech o del reg istro aritm ético co rrim ien to d erech o del reg istro lóg ico su bstracción o r ex clu sivo • Interrupciones NMI • Es activa por flanco y se muestre en el flanco positivo del último ciclo T de cada ciclo de instrucción. • Cuando el Z80 detecta una NMI, reconoce la interrupción y la atiende ejecutando una instrucción RST a la dirección 0066 (inserta una instrucción CALL 0066 dentro del programa que se estaba ejecutando y produce un salto a 0066). • Notar que 0066 no es un vector. • El PC se guarda en la pila automáticamente. • Al agregarse ciclos de wait contiguos evitan que se termine la instrucción que se está ejecutando y no se samplea la NMI. Un BUSRQ puede eliminar a un NMI. • Se retorna con una instrucción RETN • • • • • • • • • • • • • • • • • • • • • • Interrupciones Enmascarables El Z80 trabaja con tres modos de interrupciones enmascarables: MODO 0 MODO 1 MODO 2 Estos modos se programan mediante las instrucciones IM0, IM1 e IM2. Por defecto está el MODO 0. La INT se deshabilita automáticamente. Se retorna con una instrucción RETI. MODO 0 El Z80 espera una instrucción (normalmente de salto) que será puesta en el bus de datos por el periférico que interrumpe. Con el salto ya se está reconociendo de qué periférico se trata. Es similar al 8080/85. MODO 1 Al activarse el pin INT, el Z80 hace automáticamente una llamada a la dirección 0038 (no es vector sino la dirección donde empieza la subrutina de atención). Es similar al 6809. El PC se guarda en la pila automáticamente. MODO 2 El Z80 espera una dirección que será puesta en el bus de datos por el periférico que interrumpió. La dirección suministrada por el periférico es de 8 bits y es la parte menos significativa de la dirección, la parte más significativa está grabada anteriormente por el usuario en el Interrupt Page Address Register (I). La dirección formada por estas dos partes es la dirección del vector de interrupción. El vector da la información de cuál periférico interrumpió. Es similar al 8088. El PC se guarda en la pila automáticamente. • Se implementa en ordenadores, consolas, handhelds, sistemas GPS, videos, módems, tarjetas PC (SCSI, módem,...), lectores de tarjetas, centralitas, ACDs,... • Se comercializan 5 versiones: Z80 (2'5 Mhz), Z80A (4 Mhz), Z80B (6 Mhz), Z80C (5 Mhz), que se diferencian por la velocidad máxima soportada. • Le sucede la serie Z08400x (NMOS a 4, 6'17 y 8 Mhz) y Z84C00xx (CMOS a 06'17, 08,10 y 12 Mhz) • Tiene varios clones como el NEC D780C (Zilog licencia la tecnología a terceros: la LR35902, CPU de la Nintendo Gameboy, tiene un corazón Z80) • Los programadores en assambler Z80 son los que lo tienen mas sencillo al saltar al ASM x86 del PC. Tiene descendientes de 16 bits (Z8000) y de 32 bits (Z380) que se montan en raros casos en ordenadores y consolas, pero que siguen encontrándose en otros campos. El Microprocesador 6502 corresponde a la serie 6500, que forma una familia de microprocesadores compuesta por diez modelos diferentes, fabricados en tecnología NMOS y procesan palabras de 8 bits. Fue diseñado por Chuck Pedle, el creador del Commodore PET, en la empresa MOS TECHNOLOGY. La familia de microprocesadores fue desarrollada en 1975 por un grupo de ingenieros que formaron una nueva compañia llamada Mos Technology. Actualmente esta familia es fabricada en Rockwel International y Sinertek, constituyendo éste microprocesador de 8 bits el alma de muchos ordenadores personales (Apple, Commodore, Atari...). • • • • • • • El 6502 es diseñado por el mismo equipo que creó el Motorola 6800. Tras abandonar Motorola en masa, diseñaron rápidamente el 6501, un nuevo diseño pero pin-compatible con el 6800. Motorola les demandado inmediatamente, y aunque el caso se habría solucionado por acuerdo, el daño a MOS es tan grave para que acuerden parar la producción del 6501. El resultado es el "legalmente-compatible" 6502, que se diferencia sólo por un cambio del pinout que lo hace inutilizable en una placa base 6800; Motorola no parece más interesado. Sin embargo esto deja a MOS con el problema de conseguir nuevos desarrollos para el sistema, por lo que el ingeniero Chuck Peddle diseña el KIM-1, un ordenador monotarjeta. Para su sorpresa, el Kim-1 tiene ventas muy numerosas a los aficionados, así como al mercado previsto de ingenieros. El Rockwell AIM 65, un sistema de control/entrenamiento/desarrollo se vende también bien. Otr diseño similar es el Synertek Sym-1 . El 6502 se lanza al mercado en Septiembre de 1975 a $25, mientras que los 6800 e Intel 8008 se vendían a $179. Al principio mucha gente pensaba que era algún tipo de engaño pero antes de que se monte una demostración, Motorola e Intel reducen sus precios a $79. En vez del ahorro, el 6502 estaba ahora legitimado y comenzaron a vender por centenares. El 6502 tiene una característica que lo hace ideal para los sistemas de ordenadores domésticos, un pequeño retraso en el que se garantiza que no tiene acceso al bus. El hardware de video puede utilizar ese período para leer una línea de la pantalla sin tener que pausar el 6502 mientras esto ocurre. En términos generales esto acelera el funcionamiento de un sistema 6502 en un 25%. Uno de los primeros usos es la consola de videojuegos Atari 2600 . La 2600 utilizan un vástago del 6502 llamado 6507 , que tiene menos pines y por ello sólo puede direccionar 8 Kb de RAM Se venderán millones. El siguiente uso del 6502 es la familia Apple II , y tras ello aparecen rápidamente varios ordenadores de Commodore, Atari, el BBC micro (y toda la serie atómica de Acorn), y un número enorme de otros diseños ahora perdidos en la historia. Otro uso importante del 6502 es la Nintendo Famicom , una consola de videojuegos japonesa. Su equivalente norteamericano y europeo es la NES ( Nintendo Entertainment System ) El 6502 usado en la NES es una versión modificada que fue producida solamente para Nintendo , llamada 2A03. El 2A03 carece del modo decimal 6502 pero agrega 23 registros mapeados en memoria para generar sonido, dibujo de objetos, y la lectura del joypad. El eficiente diseño de los 6502 también inspira a los diseñadores del procesador del RISC ARM, y así la herencia de los 6502 se puede de decir para superar al procesador original (familia) puesto que su espíritu vive en el diseño del ARM, usado en varias computadoras de escritorio así como en numerosos PDAs, ordenadores de mano, teléfonos móviles y sistemas embebidos, y se vende como un bloque IP que se usa en sistemas todo-enun-chip. • • • • • • • • • • Alimentación única de +5 voltios. -Procesamiento paralelo de palabras o datos de 8 bits. -Juego de 56 instrucciones. -13 modos de direccionamiento para las instrucciones. -Aritmética binaria y decimal. -Stack Pointer programable de 8 bits. -Interrupciones mascarables y no mascarables. -Generador interno de señales de reloj. -Capacidad de direccionamiento de memoria de hasta 64K. -Frecuencia de trabajo de 1 y 2 Mhz; Ciclo de máquina de 1us o 500 ns. • -La instrucción más rápida es de dos ciclos de máquina y la más lenta es de siete. • -Pueden usarse con cualquier tipo y velocidad de memoria. • -La estabilización del reloj interno puede efectuarse mediante cristal o por una sencilla red R-C. Está encapsulado en una pastilla de 40 pines -16 son del bus de direcciones -8 del bus de datos -3 de las interrupciones(NMI, IRQ y RES) -3 de las señales de reloj -3 de la aimentación(+5v y dos tierras) -1 de S.O.(Activación flag V=) -1 de Ready(RDY) -1 de R/W -1 de Sincronismo(SYNC) -3 no conectadas . Se alimenta con una única línea de 5V El microprocesador 6502 dispone de cinco registros internos de 8bits, y uno de 16bits: 2 registros índices (8bits). 1 puntero de pila (8bits). 1 acumulador (8bits). 1 contador de instrucciones (16 bits) 1 registro de código de estado (8bits) Sirven para levar a cabo un modo de direccionado, denominado indexado con el que la locaización del operando de una instrucción se busca en la memoria añadiendo el contenido de estos registros a la dirección especificada en la instrucción . Son de 8 bits cada uno. • • • • • • • • • • • • • Se trata de un registro de 8 bits, 7 de los cuales son significativos y sirven para señalar una situación provocada en la ejecución de la instrucción que se acaba de realizar. La estructura es la siguiente: Los bits del registro de estados, según el nivel lógico al que se encuentren, significan lo siguiente: N- Señalización o flag de signo:cuando se utiliza una aritmética con signo, este viene indicado por el 8° bit. El bit N representa el signo del resultado de la operación realizada (1=negativo; 0=positivo). Su interpretación tiene mucha importancia para el tratamiento de los resultados. V-Señalización o flag de sobrepasamiento (overflow):cuando se utiliza el 8° bit como signo, conviene saber si se produce acarreo en el 7°(el de más peso), porque esta situación afecta a aquel y puede originar resultados erróneos. B-Señalización o flag de Break: esta bandera se pone a 1 cuando la interrupción mascarable admitida por la CPU ha sido provocada por software, mediante la instrucción BRK. si la interrupción ha sido provocada por hardware (activando desde el exterior la línea IRQ), el bit B presenta un nivel 0. D-Señalización o flag para el tratamiento aritmético: puesto a 1 la ALU realiza las operaciones en decimal o BCD, puesto a 0 realiza las operaciones en binario o hexadecimal. I-Señalización o flag de enmascaramiento de interrupciones :La petición de interrupción IRQ solo se admite y se ejecuta cuando el flag I esta a 0, poner el flag I a 1 supone la no aceptación de la petición de interrupción IRQ. Z-Señalización o flag de cero :Se pone en 1 cuando el resultado de la operación anterior ha sido cero. C-Señalización o flag de acarreo: si no se emplea el bit de signo, C pasa a 1 cuando hay un acarreo en el 8° bit, es decir, cuando el valor de la operación en curso sobrepasa el valor FF en binario o 99 en decimal. Se trata de un contador programable que direcciona la pagina 1 de la memoria como si se tratase de una pila LIFO (ultimo en entrar, primero en salir). Para simplificar la localización de las posiciones de memoria, se la estructura como un libro, en forma de páginas, cada una de las cuales consta de varias líneas o posiciones. Así, una memoria de 64K posiciones, se puede dividir en 256 páginas de 256 líneas cada una. De los 16 bits del bus de direcciones los 8 de más peso apuntan a la página y los 8 de menor peso a la posición.. Los 8 bits del stack direccionan las 256 posiciones de la página 1, desde la 25610 =010016 hasta la 51110 =01FF16. la misión del Stack es salvar en su zona de memoria propia, los contenidos de los registros importantes de la CPU, para poderlos recuperar cuando sea preciso. Casos típicos de la utilización de Stack son los saltos a subrutinas o interrupciones, en los que la salida del programa principal exige el almacenamiento de la situación de partida, para regresar de nuevo a ella cuando finalicen aquellas. El contador ordinal o contador de pasos de programa, es un elemento que una vez proporcionada la primera instrucción, basta que sea incrementado en una unidad para que proporcione la dirección de la segunda instrucción. Es un contador creciente o acumulativo formado por tantos Flip-Flops como bits contenga la palabra de direccionamiento. Está sincronizado con una base de tiempo y avanza en uno cada vez que una instrucción acaba de ejecutarse. Es suficiente conectar el contador a las líneas de dirección de la memoria para que se seleccione sucesivamente cada casilla de memoria. Es un registro de 8 bits, es el registro principal de trabajo, proporciona a la ALU uno de los operandos y almacena el resultado de la operación. • • • • • • • • • • • Las operaciones que realiza son: -La suma. -La sustracción. -El desplazamiento hacia la derecha. -El desplazamiento hacia la izquierda. -La comparación. -El incremento y decremento. Y las siguientes operaciones lógicas: -La AND lógica. -La OR exclusiva. -La OR lógica. • La operación de la multiplicación se realiza mediante desplazamientos hacia la derecha y sumas, la división se realiza mediante desplazamiento a la izquierda y restas. La ALU posee otra salida para activar los Flags del registro de estados. • • Las entradas proceden de registros temporales, el resultado es almacenado en un registro temporal, los indicadores se almacenan en el registro de estados. Comprende las 16 líneas del bus de direcciones, de carácter unidireccional. Estas líneas funcionan con niveles TTL y, a la frecuencia de 1 Mhz, la dirección es válida durante 300ns de la fase 1 del reloj. En estos terminales siempre hay una dirección válida. Consta de 8 líneas bidireccionales, por las que se transfieren los datos y las instrucciones, en sus salidas hay buffers amplificadores triestados capaces de soportar una carga estándar TTl y 130pF. Los buffers permanecen en estado flotante, a excepción del tiempo en que se transmiten datos. A la frecuencia de 1 Mhz, los datos permanecen estables en el bus 100ns antes de finalizar la fase 2 del reloj. • • • • • • • • • • • • -Direccionamiento implícito: emplea un sólo byte para referirse a uno de los registros de uso interno del 6502. -Direccionamiento inmediato: utiliza dos byte, el primero para el código de operación y el segundo para el dato. -Direccionamiento absoluto: utiliza tres bytes, el primero contiene el código de operación, y los dos restantes la dirección de memoria dónde se encuentra el dato. -Direccionamiento indirecto: se trata generalmente de un salto incondicional a una dirección determinada y el dato buscado corresponde con otra dirección, se utiliza bastante con subrutinas. -Direccionamiento absoluto indexado: el operando incluido en la instrucción constituye a dirección base, a esta dirección hay que sumar el contenido del registro índice X o Y, según se indique en la instrucción, la suma constituye la dirección real del dato que vamos a utilizar. -Direccionamiento página cero indexado: idéntico al anterior pero suponiendo que la dirección base pertenece a página cero. -Direccionamiento Pre-indexado: opera únicamente sobre e registro X, consta de dos bytes, uno corresponde al código de operación y el otro a la dirección base situada en página cero. Esta dirección se suma al contenido del registro X constituye la dirección intermedia dónde se encuentra un dato, el resto se encuentra en la dirección siguiente. -Direccionamiento post-indexado: opera únicamente sobre el registro Y, consta de dos bytes, la dirección base corresponde a página cero, donde el dato comprendido en esta posición de memoria constituye el byte bajo, que junto con el byte alto, contenido en la siguiente posición de memoria, forman una dirección intermedia a la que hay que añadir el contenido del registro Y para obtener la dirección real donde se encuentra el dato que necesitamos. -Direccionamiento relativo: es utilizado únicamente en las instrucciones de salto condicional, el operando de un sólo byte contiene e valor del desplazamiento expresado en complemento a 2. La dirección real se calcula sumando el desplazamiento al contador de programa una vez actualizado. Sólo se pueden dar 127 pasos adelante y 128 pasos atrás. -Direccionamiento en el acumulador: corresponde a modo implícito que utiliza un sólo byte, para las funciones del acumulador. -Direccionamiento indirecto absoluto indexado: sólo afecta a la instrucción de salto incondicional, el contenido de los bytes segundo y terceros se suma al registro X, e resultado de 16 bits es la dirección de memoria que contiene a dirección efectiva. -Direccionamiento indirecto: aparece sólo en las versiones de CMOS para instrucciones distintas de JMP y se ha descrito junto con el indirecto. • Dispone de 3 líneas por las que, desde el exterior, es posible provocar diferentes tipos de interrupciones, siendo activas a nivel bajo(IRQ,NMI y RES). • La entrada RES(Reset), se utiliza para inicializar el microprocesador, saltando la ejecución del programa a una rutina cuya dirección de comienzo se encuentra situada en las posiciones de memoria $FFFC y $FFFD,obteniendo respectivamente el Byte bajo y el alto. • La NMI, interrupción no emmascarable, permite interrumpir al microprocesador independientemente del estado del bit I del registro de estado. Provoca el salto de la ejecución de programa a la dirección contenida en las posiciones $FFFA y $FFFB, salvando antes el contador de programa y la palabra en el Stack. • La IRQ, petición de interrupción, funciona como la MNI pero dependiendo del estado del bit I del registro de estados para poder ser aceptada. El vector de interrupción es $FFFE y $FFFF. Posee 56 instrucciones distintas • En la película de Ciencia-Ficcion Terminator (1984), protagonizada por Arnold Schwarzenegger como el Terminator T100, en determinados momentos se ve a través del ojo robótico del Terminator donde un programa en ensablador 6502 hace scroll hacia abajo. El código muestra un checksum de un programa para el Apple II publicada en al revista Nibble. • Bender, el impagable robot protagonista de Futurama, teóricamente fabricado en 2998, muestra tener un 6502 de CPU al ser escaneado por rayos en el episodio Fry y la fábrica de de Slurm.