Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 EC2721 27/05/2013
Modos de direccionamiento
INH Inherente
IMM (IMM1, IMM2) Inmediato
DIR Directo
EXT Extendido
IX Indexado
IX1 Indexado, 8 bits de offset
IX2 Indexado, 16 bits de offset
IX+ Indexado con post-incremento
REL relativo
SP1 SP, 8 bits de offset
SP2 SP, 16 bits de offset
2 EC2721 27/05/2013
Inherente
No tienen una etapa de obtención de operandos asociada a la
instrucción
El operando se encuentra implícito en la instrucción
La mayoría solo necesitan un byte por instrucción
3 EC2721 27/05/2013
Ejemplo de Instrucciones Inherentes
4 EC2721 27/05/2013
Inmediatas
Los o el byte del operando se encuentran inmediatamente luego del
opcode de la instrucción
Pueden tener operandos de 1 o 2 bytes
El ancho de la instrucción es de 2 o 3 bytes dependiendo del operando
5 EC2721 27/05/2013
Ejemplos de instrucciones inmediatas
6 EC2721 27/05/2013
Directas
Conocido también como direccionamiento absoluto
La dirección del operando está contenido en la instrucción (solo
8bits)
El ancho de la instrucción es de 2 bytes (1 byte para opcode y 1
byte de dirección de operando)
Solo se puede direccionar desde $0000 hasta $00FF
7 EC2721 27/05/2013
Extendidas
Similares a las directas, la diferencia radica en que la dirección del
operando es de 16 bits
El ancho de la instrucción es de 3 bytes
Se pueden direccionar valores hasta 64k
8 EC2721 27/05/2013
Gráfica del direccionamiento extendido
9 EC2721 27/05/2013
Ejemplo
10 EC2721 27/05/2013
Ejemplo de instrucciones con
direccionamiento extendido
11 EC2721 27/05/2013
Indexadas sin offset
Son instrucciones de 1 byte (con direcciones variables)
La dirección no se encuentra en la instrucción
Se obtiene del registro H:X
Arquitecturas anteriores solo utilizaban el registro X
Estaban limitadas a direcciones entre $00 y $FF
12 EC2721 27/05/2013
Indexadas con offset
El offset es un operando que se encuentra dentro de la
instrucción
El offset puede ser de 8 bits o de 16 bits
Offset de 8 bits: Ancho de instrucción es de 2 bytes
Offset de 16 bytes: Ancho de instrucción es de 3 bytes
El valor de este operando suma al registro H:X para obtener la
nueva dirección
13 EC2721 27/05/2013
Instrucciones con direccionamiento
indexado
14 EC2721 27/05/2013
Indexadas con post incremento
Son instrucciones de tipo indexadas
Al final de la instrucción se incrementa el valor del registro X
Si el registro X tiene el valor $FF al desbordarse se incrementará el registro H
El valor del incremento se encuentra en la propia instrucción
No offset. Instrucciones de 2 bytes
Offset 8 bits. Instrucciones de 3 bytes
15 EC2721 27/05/2013
Stack Pointer Offset
Similar al direccionamiento indexado
En vez de utilizar el registro H:X se utiliza el registro SP como base
Offset de 8 bits y 16 bits.
Ancho de instrucción de 3 y 4 bytes respectivamente (diferente al
indexado!!!)
16 EC2721 27/05/2013
Direccionamiento Relativo
Solo se utiliza en instrucciones de bifurcación para obtener el destino de la misma.
Se suma un offset son signo de 8 bits a PC para obtener la nueva dirección de
instrucción
La nueva dirección se obtiene de la siguiente forma
Dirección Efectiva = PCnext + extensión_signo(Offset)
PCnext = Pcbranch + 2
Pcbranch = posición de la bifurcación en la memoria
Como el offset es de 8 bits con signo el rango efectivo es PCnext-128 hasta
PCnext+127
Bra * == Bra - 2
17 EC2721 27/05/2013
Instrucciones con direccionamiento relativo
18 EC2721 27/05/2013
Instrucciones de memoria a memoria
Inmediato a directo
3 bytes de instrucción. Inicializar variables y registros en la pagina directa
Directo a Directo
3 bytes de instrucción. Movimiento entre registros de la página directa
Indexado a Directo con post incremento
2 bytes de instrucción. Transferir tablas indexadas por HX hacia registros en la
página directa
Directo a indexado con post incremento
2 bytes de instrucción. Transferir tablas desde registros hacia el resto de la
memoria.
19 EC2721 27/05/2013
Entrada y Salida Programada
20 EC2721 27/05/2013
El hardware del MC9S08QE128
Los dispositivos de entrada y salida de un computador
son los que permiten su interacción con el mundo y con
el usuario
Sin Entrada/Salida (I/O) los sistemas de cómputo serían
inútiles
El computador/microcontrolador se comunica con el
mundo utilizando interfaces (o puertos)
Es una especificación bien definida para la comunicación entre
dos dispositivos
Incluye los estándares del formato de datos tanto mecánico como
electrónico
21 EC2721 27/05/2013
Diagrama de bloques y pinout del
MC9S08QE128 (Ver. Reference Manual)
22 EC2721 27/05/2013
Diagrama de bloques y pinout del
MC9S08QE128 (Ver. Reference Manual)
23 EC2721 27/05/2013
I/O mapeada en memoria
Las interfaces de I/O pueden ser de sólo salida, solo
entrada o bidireccionales
Generalmente un puerto de I/O salida incluye una serie
de registros en los que el CPU puede escribir o leer
datos.
Registros de Datos
Registros de Control
Registros de Status
La cantidad de registros varía según el puerto
Para que el CPU pueda acceder a estos registros los
mismos deben tener algún tipo de identificador para
direccionarlos
24 EC2721 27/05/2013
Entrada / Salida Mapeada en Memoria
0000
• Comparte el Espacio de direcciones
Memoria RAM de la memoria.
• No hay instrucciones especiales para
0011 acceder a la Entrada / Salida, ni
0100
líneas.
Entrada / Salida
• Una instrucción de E/S podría ser:
0111
mov 0x005 → 0x101 ; Salida
1000
mov 0x102 → 0x005 ; Entrada
1111
25 Prof. O. de Castro.
I/O mapeado en memoria
El espacio de memoria de direcciones de I/O puede ser
parte del espacio de memoria del CPU
Pero también puede ser separado
En el caso del HC08 el espacio de memoria de I/O forma
parte del espacio de memoria del CPU
En Intel el espacio de memoria es separado.
26 EC2721 27/05/2013
Entrada / Salida Aislada
0000 000
• Espacio de direcciones especial.
• Instrucciones especiales.
Entrada / Salida
• Una instrucción de E/S podría ser:
111
OUT 0x005 → 0x005 ; Salida
IN 0x006 → 0x006 ; Entrada
Memoria RAM
• Se deben usar señales especiales de
control (no las de memoria)
activadas por las instrucciones.
27 Prof. O. de Castro.
Entrada / Salida mapeada: Implementación Básica.
D0 a D7
74LS244
A0 D0 1Y1 1A1
Buffer de 3 estados
A0
1Y2 1A2
Memoria 16x8
A1 A1 D1
A2 D2 1Y3 1A3
A2
A3 D3 1Y4 1A4
A3
D4 2Y1 2A1
A4
D5 2Y2 2A2
WE
OE D6 2Y3 2A3
CS D7 2Y4 2A4
2G 1G
Puerto (0)
Procesador A Y0 Puerto 74LS374
que direcciona B Y1 (1)
Puerto D0 Q0
32 bytes (25) Y2 (2)
Puerto D1 Q1
G Y3 (3) D2 Q2
D3 Q3
74LS139
Biestable
D4 Q4
D5 Q5
Direccionamiento: 00000 a 11111 D6 Q6
Memoria RAM: 00000 a 01111 (16 bytes) D7 Q7
Entrada/Salida: 10000 a 10011 (4 E/S) OC CLK
Indefinida en circuito: 10100 a 11111
Buffer de 3 estados
A0
1Y2 1A2
Memoria 16x8
A1 A1 D1
A2 D2 1Y3 1A3
A2
A3 D3 1Y4 1A4
A3
D4 2Y1 2A1
D5 2Y2 2A2
WE
OE D6 2Y3 2A3
CS D7 2Y4 2A4
2G 1G
Puerto (0)
A Y0 Puerto 74LS374
IO / M B Y1 (1)
Puerto D0 Q0
Y2 (2)
Puerto D1 Q1
G Y3 (3) D2 Q2
D3 Q3
74LS139
Biestable
Procesador D4 Q4
D5 Q5
que direcciona Direccionamiento: 0000 a 1111 D6 Q6
16 bytes (25) Memoria RAM: 0000 a 1111 (16 bytes) D7 Q7
Entrada/Salida: 0000 a 0011 (4 puertos) OC CLK
Indefinida en circuito: 0100 a 1111
30 EC2721 27/05/2013
Pasos en una transacción I/O
CPU revisa el estatus en el módulo de I/O del dispositivo
El módulo I/O retorna el estatus
Si el módulo está listo el CPU solicita transferencia de
datos
El módulo I/O obtiene los datos del dispositivo
El módulo I/O transfiere los datos al CPU
31 EC2721 27/05/2013
Entrada / Salida: programación
Entrada / Salida Programada
El programa en el procesador se encarga de todas las tareas de E/S.
El programa explícitamente transfiere los datos, configura los dispositivos, y les pregunta
periódicamente por el estado y datos de los mismos.
Desventaja dado que el procesador es mucho mas veloz que los dispositivos de E/S, de
modo que la espera por programa representa ineficiciencia.
32 Prof. O. de Castro.
Entrada / Salida: Módulos Programables
Permiten flexibilizar la programación en el uso de E/S.
Circuitos menos discretos.
Un solo integrado puede cumplir multiples funciones programables.
Se construyen directamente adaptados al conexionado de buses del
computador.
Ejemplos:
Interfaz de periféricos 82C55A.
Controlador de Interrupciones 82C59A.
Interfaz de teclado/pantalla 8279
Temporizador programable 8254
Módulos periféricos del MC68HC908GP32.
33 Prof. O. de Castro.
Entrada/Salida: Dispositivos programables
34 Prof. O. de Castro.
Entrada/Salida: programación
36 Prof. O. de Castro.
Entrada/Salida por Interrupciones
38 Prof. O. de Castro.