Beruflich Dokumente
Kultur Dokumente
mqwertyuiopasdfghjklzxcvbnmqwert yuiopasdfghjklzxcvbnmqwertyuiopas
MICROPROCESADORES EJERCICIOS CON EL MICROPROCESADOR 8085 17/02/2009 OSMAR MOROCHO J.
MICROPROCESADORES
EJERCICIOS CON EL MICROPROCESADOR 8085 EJERCICIO 1 1. Analice el siguiente programa Address (Hexadecimal) 0822C 0822D 0822F 08230 08231 08233 Instrucciones (Assembly Language) NOP IN 00 ADD A ADD A OUT 00 JMP 0822D Lenguaje maquina (Hexadecimal) 00 DB 00 87 87 D3 00 C3 0000
Este programa crea un bucle indefinido de un proceso de suma de una misma cantidad, el resultado se vuelve a sumar la misma cantidad anteriormente descrita, este resultado lo muestra por el puerto 00. En programa se tiene dos problemas, se detallaran a continuacin: Para que el programa identifique si el numero ingresado es hexadecimal, se debe ubicar la letra h al final de cada numero. JMP, no permite que el programa corra apropiadamente, ya que este se dirige a una direccin inexistente por esto el programa se detiene en ese instante y no pasa al bucle.
NOP: Permite ejecutar la siguiente lnea de programacin. IN (direccin puerto): Permite leer un puerto 00 de entrada/salida (I/O). OUT (direccin puerto): Permite presentar por el puerto 00 un dato al acumulador. JMP: Crea un bucle infinito, que es cargado en memoria, tambin permite saltar a una direccin de una instruccin especificado por JMP, en este caso es 08822Dh. ADD: Suma el valor del registro indicado por ADD al acumulador. 3. Si el dato ingresado en el puerto de entrada es 05h, que resultado se obtendr a la salida del puerto? Puerto 00 1416 = 2010 4. Si el dato es 10h, cual ser el resultado?
MICROPROCESADORES
Puerto 00 4016 = 6410 5. Verifique sus contestaciones ingresando y ejecutando el programa en el simulador GNUSIM8085, actualice la memoria 0822d de la ltima instruccin de acuerdo al registro PC de su simulacin.
MICROPROCESADORES
EJERCICIO 2 1. Analice el programa Address (Hexadecimal) 0000 0001 0003 0004 0007 0009 000B 10 Instrucciones (Assembly Language) NOP IN 00 MOV B, A LDA 0010 ADD B OUT 00 JMP 0000 (DATO) 45 Lenguaje maquina (Hexadecimal) 00 DB 00 47 3A 10 00 88 D3 00 C3 0000
El programa carga un valor desde el puerto 00 al acumulador A, para luego ser movido ese valor al registro B, para luego tomar el valor de la posicin de memoria almacenado en el acumulador para sumar el valor del registro B. El programa tiene problemas similares al ejercicio anterior.
2. Explique las instrucciones del programa NOP: Permite ejecutar la siguiente lnea de programacin. IN (direccin puerto): Permite leer un puerto 00 de entrada/salida (I/O). MOV: Mueve el valor de un registro de destino a un registro especificado. LDA: Permite cargar al acumulador A un valor almacenado en una direccin de memoria especificado por LDA. OUT (direccin puerto): Permite presentar por el puerto 00 un dato al acumulador. JMP: Crea un bucle infinito, que es cargado en memoria, tambin permite saltar a una direccin de una instruccin especificado por JMP, en este caso es 0000. ADD: Suma el valor del registro indicado por ADD al acumulador.
3. Si el dato ingresado en el puerto de entrada es 0Ah, que resultado se obtendr a la salida del puerto? Puerto 00 3716 = 5510 4. Si el dato es 1Fh, cual ser el resultado?
MICROPROCESADORES
Puerto 00 4C16 = 7610 5. Verifique sus contestaciones ingresando y ejecutando el programa en el simulador GNUSIM8085, actualice la memoria 0000 de la ltima instruccin de acuerdo al registro PC de su simulacin.
EJERCICIO 3 1. Analice el programa, determine los ciclos de maquina que llevara a cabo cada una de sus instrucciones Address (Hexadecimal) 0000 0001 0003 000B Instrucciones (Assembly Language) NOP LDA 0010 ADI 02 JMP 0000 Lenguaje maquina Ciclos (Hexadecimal) 04 13 07 10 34
00 3A 10 00 C6 02 C3 0000
MICROPROCESADORES
El programa carga el valor de 55 de la posicin de memoria 1010 al acumulador para ser sumado por un valor de 2 para luego el resultado ser almacenado en el acumulador. 2. Ingrese el programa y crralo en el simulador GNUSIM8085 (Actualice las direcciones de memoria de acuerdo a su simulacin). Grafique el contenido de los registros A, PC y las banderas ejecutando el lazo tres veces.
Lazo 1 A PC P
Lazo 2 39 A 836A PC 1P
3. Explique el significado de las banderas de acuerdo al valor que van tomando Bandera de paridad P=1 Si la suma de unos da como resultado par. P=0 Si la suma de unos da como resultado impar.
MICROPROCESADORES
EJERCICIO 4 1. Analice el siguiente programa. Carque el valor 43h en el puerto de entrada 00 y determine los ciclos de maquina que llevara a cabo cada una de sus instrucciones. Dibuje el diagrama de tiempo de los registros.
Ciclos 4 10 10 10 34
C3 00 00 TOTAL CICLOS
El programa toma un valor de 43h del puerto 00, a este valor lo almacena en el Acumulador para luego poder visualizarlo en puerto 05, esto es un ciclo infinito. Correccin del error: JMP 0000 JMP 0A9D5H
Donde T es el periodo de reloj del CPU, LoopT-State es la sumatoria de TState de cada instruccin, N10 es el valor delay cargado en el registro decimal.
MICROPROCESADORES
NOP
IN
OUT
JMP
Figura 4.0 Tiempo de ejecucin Ejercicio IV GNUSIM8085 2. Ingrese el programa y crralo. Que relacin existe entre lo que representa los valores ingresados al puerto de entrada y lo que sale del puerto asignado.
a)
b)
Figura 4.3 Puerto I/O Ejercicio IV a) b) GNUSIM8085 Existe una relacion entre los puertos de I/O, cuando se ingresa un numero en puerto 00, este valor se presenta en manera hexadecimal (43h), cuando se ingresa el numero en el puerto 05, este valor se presenta de manera decimal (67).
MICROPROCESADORES
EJERCICIO 5 1. Traduzca el siguiente programa a lenguaje de maquina y asgnele una direccin a cada instruccin. Comience con la direccin aleatoria que el simulador GNUSIM8085 asigne en su simulacin en modo hexadecimal.
Instrucciones (Assembly Language) NOP LDA 0C020h MVI B, 88 ANA B SUI 02 OUT 00 STA 0C021h JMP XXXX 97 (DAT0)
C020
2. Analice el programa. Que debe suceder cuando corremos el programa? Carga el valor 97H a una localizacin de memoria 0C020h, luego asigna el valor de 88 en el registro B, para realizar una operacin lgica AND entre los registros A y B, para despus restar el valor de 2 al acumulador, el resultado se presenta en el puerto 00, localizado en una posicin de memoria 0C021h.
MICROPROCESADORES
EJERCICIO 6
1. Traduzca el siguiente programa a lenguaje de maquina y asgnele una direccin a cada instruccin. Comience con la direccin aleatoria que el simulador GNUSIM8085 asigne en su simulacin en modo hexadecimal en la programacin.
2. Analice el programa. Que debe suceder cuando corremos el programa, si tenemos el numero 18h en el puerto de entrada?
Carga el valor 18H desde el puerto 00, este valor se guarda en el acumulador, para despus realizar la operacin denotada por el valor indicado por ORI,
MICROPROCESADORES
EJERCICIO 7
1. Traduzca el siguiente programa a lenguaje de maquina y asgnele una direccin a cada instruccin. Comience con la direccin aleatoria que el simulador GNUSIM8085 asigne en su simulacin en modo hexadecimal en la programacin.
Instrucciones (Assembly Language) NOP MVI A, 070h MVI B, 0ACh XRA B STA C012 HLT
2. Analice el programa. Que debe suceder cuando corremos el programa? El programa carga los valores 070h y 0ACh a los registros A y B respectivamente, luego se realiza una operacin lgica OR EXCLUSIVA entre el acumulador y el registro B, se debe adicionar en la direccin de STA 0****h0C012h.
MICROPROCESADORES
EJERCICIO 8
1. Traduzca el siguiente programa a lenguaje de maquina y asgnele una direccin a cada instruccin. Comience con la direccin aleatoria que el simulador GNUSIM8085 asigne en su simulacin en modo hexadecimal en la programacin.
Instrucciones (Assembly Language) NOP MVI A, 099h ANI 01h JNZ ETIQUETA1 MVI A, 0CCh JMP PRESENTA ETIQUETA1: MVI A, 0F PRESENTA: OUT 00 HLT
2. Analice el programa. Que debe suceder cuando corremos el programa? Carga el valor 099H al registro A, luego se realiza la operacin lgica AND entre el acumulador y el valor de ANI, despus realiza un salto a ETIQUETA1, en ella se asigna el valor de 0F al registro A, este contenido se presenta por el
MICROPROCESADORES
puerto 00, esto no ejecuta la lnea de MVI A, 0CCh que asignara el valor de 0F al registro A. 3. Ingrese el programa y crralo. Verifique sus predicciones.
EJERCICIO 9
1. Traduzca el siguiente programa a lenguaje de maquina y asgnele una direccin a cada instruccin. Comience con la direccin aleatoria que el simulador GNUSIM8085 asigne en su simulacin en modo hexadecimal en la programacin.
Instrucciones (Assembly Language) NOP IN 00 LAZO: INR B SUI 057h JNZ LAZO MVI A, 0FFh OUT 00 HLT
2. Analice el programa. Que debe suceder cuando corremos el programa, si cargamos el numero 33h en el puerto de entrada?. Cuando terminara el programa? El valor del puerto 00 es almacenado en el acumulador, la instruccin LAZO incrementa en 1 al registro B, luego se realiza una resta entre el acumulador y el valor de 057h, esto se hace indefinidamente por el bucle JNZ, siempre y
MICROPROCESADORES
cuando Z0, esta lnea LAZO impide la ejecucin de las dems lneas del programa, afectando a las banderas S (Signo del resultado, S=0 resultado positivo caso contrario S=1 resultado negativo) y C (Acarreo, C=1 resultado un numero de 9 bits caso contrario C=0 resultado numero de 8 bits).
EJERCICIO 10
1. Traduzca el siguiente programa a lenguaje de maquina y asgnele una direccin a cada instruccin. Comience con la direccin aleatoria que el simulador GNUSIM8085 asigne en su simulacin en modo hexadecimal en la programacin.
Instrucciones (Assembly Language) NOP TOPE: IN 00 CMI 99 JNC TOPE MVI A, EE OUT 00 HLT
MICROPROCESADORES
2. Analice el programa. Describa en sus propias palabras la operacin del programa. Puede utilizar un flujograma si le es conveniente. Se toma el valor del puerto 00 para almacenarse en el acumulador, CMI, no es comando valido, se puede reemplazar por CPI, si el comando es CPI se compara el acumulador y el valor asignado en CPI, el resultado se almacenara por comparacin en banderas como se especifica: Si A < Dato C=1 Si A > Dato C=Z=0 Si A = Dato Z=0
JNC forma un bucle infinito siempre que ocurra la negacin de C=0, luego se asigna el valor de 0EEh al registro A y por ultimo el resultado se presenta por el puerto 00.
EJERCICIO 11
MICROPROCESADORES
Disee un programa que escriba en la memoria 2100 el contenido del puerto 05 y en la 2101 el contenido del puerto 06 y luego cense el puerto de entrada 00, si el valor es 1F haga una subrutina que divida para dos ese nmero y si es F1 haga una subrutina que el contenido de memoria 2100 y 2101, luego de ejecutar cualquiera de las subrutinas, retorne al programa principal y presente el resultado en el puerto 00.
a)
b)
EJERCICIO 12 Disee un programa que reciba un nmero en el puerto 01 y si es mayor a 89h, llame a una subrutina que lo divida para 2 tres veces consecutivas, caso contrario termina el programa. Luego sin retornar al programa principal, si el nmero resultante es mayor que 20, llame una subrutina que desplace el nmero dos veces hacia la derecha, retorne a la subrutina previa, retorne al programa principal y muestre el resultado en el puerto 02
MICROPROCESADORES
a)
b)