Documento 90117

Anuncio
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.
Descargar