Práctico 3

Anuncio
UNIVERSIDAD NACIONAL DE SAN LUIS
Facultad de Ciencias Físico Matemática y Naturales
Técnico Universitario en Microprocesadores
Ingeniería Electrónica Orientación Sistemas Digitales
PROCESADORES I
PRÁCTICO 3: UNIDAD DE CÓMPUTO
OBJETIVO: Reforzar los conceptos sobre unidad de cómputo, buses, registros generales y específicos, instrucciones y
tipos de instrucciones. Realizar programas sencillos a partir de un conjunto reducido de instrucciones aritméticas, de
transferencia y bifurcación. Ejercitar el tema de decodificación de direcciones, particularmente en la formación de la
dirección efectiva y el uso de las distintas instrucciones de acceso a memoria y a puertos de I/O.
ELEMENTOS NECESARIOS:
- Conocer los temas dados en la teoría correspondiente.
- Estar familiarizado con el decodificador 74138, con las señales de control y con el conjunto reducido de
instrucciones del μP 8085 incluidas las instrucciones de acceso a memoria y a puertos de I/O.
1) Responder:
ƒ ¿Cuales son las partes mas importantes que forman una unidad de cómputo?
ƒ ¿Cuales son las funciones de cada uno de los bloques de la pregunta anterior?
ƒ ¿Cual es la función del registro contador de programa ( PC )?
ƒ ¿Donde están las instrucciones que debe ejecutar el microprocesador?
ƒ ¿Que diferencia hay entre la memoria de datos y la memoria de programa?
ƒ ¿Que ventajas y desventajas existen si se tienen buses independientes de direcciones y de datos para la
memoria de programa y la memoria de datos?
ƒ ¿La memoria de programa debe ser: a) tipo RAM; b) tipo ROM; c) cualquiera de los anteriores.
ƒ ¿Qué elemento de la unidad de cómputo puede escribir sobre:
a) el bus de datos; b) el bus de direcciones; c) el bus de control.
2) Suponiendo que hay memoria ROM desde la dirección 0000h a la 00FFh, memoria RAM desde la 0100h a la 01FFh,
entradas desde la dirección 1000h a la 10FFh, y salidas desde la dirección 1100h a la 11FFh:
a)
b)
c)
d)
e)
Realizar un programa con el set de instrucciones dado que permita tomar un dato de la dirección 0110h
sumarle 1 y guardarlo en la dirección 0111h. Escribir el programa en assembler y el listado en hexadecimal
Realizar un programa con el set de instrucciones dado que sume los primeros 2 datos que están a partir de la
dirección 0110h y guardarlos en de la dirección 01F0h. Escribir el programa en assembler y el listado en
hexadecimal
Realizar un programa con el set de instrucciones dado que sume los primeros 5 datos que están a partir de la
dirección 0110h y guardar las sumas acumuladas a partir de la dirección 0lF0h. Escribir el programa en
assembler y el listado en hexadecimal .
Leer el estado de la entrada de la dirección 1000h, si el valor es cero poner en la dirección de salida 1100h el
valor 0Ah, si el valor es distinto de cero sacar el valor leído por la dirección 1101h
Se tiene el siguiente código:
MVI
A,FFh
MVI
B,02
INR
A
ADD
B
STA
1111h
MOV
A,B
STA
1100h
DCR
B
Decir que valor queda en los registros A, B y en las direcciones de memoria 1100h y 1111h, después de la
ejecución de dicho código.
UNIVERSIDAD NACIONAL DE SAN LUIS
Facultad de Ciencias Físico Matemática y Naturales
Técnico Universitario en Microprocesadores
Ingeniería Electrónica Orientación Sistemas Digitales
f) Se tiene el siguiente código:
Dir:
Instrucción:
0000h
0002h
0004h
0005h
0008h
MVI
MVI
DCR
JZ
JMP
...
MOV
DCR
JZ
MOV
JMP
0020h
B,10h
A,02
A
0020h
0004h
Indicar qué valor queda en los registros A y B
después de ejecutarse:
i) 2 instrucciones,
ii) 8 instrucciones y
iii) 15 instrucciones.
A,B
A
0002h
B,A
0020h
3) ¿Como reemplazaría una instrucción INR B usando otras de las instrucciones dadas?
4) ¿Cuantos accesos se hacen a memoria (ya sea de lectura o escritura) cuando se ejecutan las siguientes instrucciones?
INR
A
MVI
B,5Dh
STA
10FFh
5) Realizar con el set de instrucciones dado, los programas que se detallan a continuación, escribiendo en cada caso el
programa en assembler y el listado en hexadecimal:
a)
Copiar los valores que están en las direcciones 1000h, 1001h y 1002h en las direcciones 2000h, 2001h y 2002h
respectivamente.
b) Sumar los números distintos de cero que hay en las direcciones 1000h 1001h y 1002h. El valor obtenido se debe
guardar en la dirección 1003h.
c) Intercambiar los valores que están en las direcciones 1000h 1001h y 1002h. con los que están en las direcciones
2000h, 2001h y 2002h.
d) Leer el contenido de la dirección 1010h. Si el valor leído es cero o uno colocar en la dirección 101lh un cero, si
no es ni cero ni uno colocar en la dirección 1011h en valor FFh.
6) Dado el circuito de la figura:
D8..D0
8Kx8
8Kx8
A0..A12
ROM1
Vcc
1Kx8
A0..A12
A0..A9
ROM2
/CS
/CS
RAM
/CS
DECO1
/RD
E1
E2
E3
/RD
A10
A11
A12
74138
A13
A14
A15
74138
E1
E2
E3
Vcc
O0
O1
O2
O3
O4
O5
O6
O7
/WR
/RD
O0
O1
O2
O3
O4
O5
O6
O7
a) Indicar las direcciones donde están ubicadas las memorias ROM1, ROM2 y RAM.
b) Ídem al anterior, pero eliminar el DECO2 y conectar el /CS de la RAM directamente al O7 del DECO1.
UNIVERSIDAD NACIONAL DE SAN LUIS
Facultad de Ciencias Físico Matemática y Naturales
Técnico Universitario en Microprocesadores
Ingeniería Electrónica Orientación Sistemas Digitales
7) ¿Cuántas veces se pone en alto la señal de ALE del 8085 si se ejecutan las siguientes 2 instrucciones?.
a) LDA
INR
27A4h
A
b) STA
ADD
52Afh
C
c) IN
INR
7Ah
B
d) OUT
MOV
2Bh
B,A
8) ¿Cuántas veces se activan las señales del μP 8085 /RD y /WR, para cada uno de los casos del ejercicio anterior?
9) Explique por qué se debe usar un latch para un puerto de salida y un buffer tri-state para un puerto de entrada. ¿Con
que señal del micro se debe hacer el latch para el puerto de salida? y ¿que señal del micro se debe usar para sacar de tristate un puerto de entrada?
EJERCICIOS COMPLEMENTARIOS:
10)
Puerto A
IO/M
AD0..AD7
Octal
latch
PA0..PA7
E1
E2
E3
A4
A3
Puerto B
74138
A0
A1
A2
/LE
/OE
Octal
latch
O0
O1
O2
O3
O4
O5
O6
O7
/LE
PB0..PB7
/OE
/WR
Tendiendo en cuenta el circuito de la figura escribir un conjunto de instrucciones en assembler del 8085 que ponga a la
salida del puerto A el valor FF y a la salida del puerto B el valor AA.
11)
Puerto A
IO/M
AD0..AD7
Octal
buffer
Puerto B
A4
A3
E1
E2
E3
74138
A0
A1
A2
PA0..PA7
/OE
O0
O1
O2
O3
O4
O5
O6
O7
Octal
latch
PB0..PB7
/RD
/LE
/OE
/WR
Teniendo en cuenta el circuito de la figura escribir un conjunto de instrucciones en assembler del 8085 que ponga a la
salida del puerto B el valor del puerto A + 1.
UNIVERSIDAD NACIONAL DE SAN LUIS
Facultad de Ciencias Físico Matemática y Naturales
Técnico Universitario en Microprocesadores
Ingeniería Electrónica Orientación Sistemas Digitales
A0
A1
A2
74138
E1
E2
E3
A4
IO/M
A3
12) Repetir los ejercicios 10 y 11 pero cambiando en el circuito las entradas del decodificador del siguiente modo.
O0
O1
O2
O3
O4
O5
O6
O7
SET (REDUCIDO) DE INSTRUCCIONES:
ASSEMBLER
INR B
INR A
MVI A,dato
MVI B,dato
LDA dir
STA dir
ADD B
ADD C
MOV B,C
MOV C,B
MOV A,B
MOV B,A
DCR A
JMP dir
JZ dir
HEXADECIMAL
04
3C
3E,dato
06,dato
3A,dir
32,dir
80
81
41
48
78
47
05
C3,dir
CB,dir
JNZ dir
C2,dir
IN port
OUT port
DB,port
D3,port
Referencias:
dato
dir
port
OPERACIÓN
B Å B+1
A Å A+1
A Å dato
B Å dato
A Å (dir)
(dir) Å A
A Å A+B
A Å A+C
B Å C
C Å B
A Å B
B Å A
A Å A-1
PC Å dir
PC Å dir
si flag
PC Å PC+3 si flag
PC Å dir
si flag
PC Å PC+3 si flag
A Å (port)
(port) Å A
número de 8 bits
dirección de 16 bits
dirección de 8 bits de un puerto de I/O
COMENTARIO
afecta flag Z
afecta flag Z
afecta flag Z
afecta flag Z
afecta flag Z
Z=True
Z=False
Z=False
Z=True
IO/M en alto
IO/M en alto
Descargar