Sie sind auf Seite 1von 17

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfg hjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfg hjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfg hjklzxcvbnmrtyuiopasdfghjklzxcvbn

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.

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). 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.

Figura 1.0 GNUSIM8085

Figura 1.1 programa corregido GNUSIM8085

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.

Figura 2.0 Ejercicio II GNUSIM8085 Figura 2.1 Correccin Ejercicio II GNUSIM8085

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

TOTAL CICLOS 0010 55 (DATO)

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.

Figura 3.0 Ejercicio III GNUSIM8085

Figura 3.1 Correccin Ejercicio III GNUSIM8085

Lazo 1 A PC P

Lazo 2 39 A 836A PC 1P

lazo 3 39 A 836A PC 1P 39 836A 1

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.

Address (Hexadecimal) 0000 0001 0004 0006


Address (Hexadecimal) 0 1 4 6

Instrucciones (Assembly Language) NOP IN 00 OUT 05 JMP 0000


Instrucciones (Assembly Language) NOP IN 00 OUT 05 JMP 0000 DB 00 D3 05

Lenguaje maquina (Hexadecimal) 00 DB 00 D3 05 C3 00 00

Lenguaje maquina (Hexadecimal)

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

Diagrama de tiempo para registros Tiempo para el registro A:

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.

Si el reloj trabaja a una frecuencia de 2MHz; T=500ns.

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.

Figura 4.1 Ejercicio IV GNUSIM8085 Figura 4.2 Correccin Ejercicio IV GNUSIM8085

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.

Address (Hexadecimal) XXXX (PC) XXXX+1 (PC)

Instrucciones (Assembly Language) NOP LDA 0C020h MVI B, 88 ANA B SUI 02 OUT 00 STA 0C021h JMP XXXX 97 (DAT0)

Lenguaje maquina (Hexadecimal) 00 3A 20C0 0658 A0 D6 02 D3 00 32 21 C0 C3 95 90

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.

3. Ingrese el programa y crralo. Verifique sus predicciones.

Figura 5.0 Ejercicio V GNUSIM8085

MICROPROCESADORES

4. Detenga el programa y verifique el contenido de la direccin de la memoria C021. Que contiene?

Figura 5.1 Ejercicio V GNUSIM8085 C021h6210

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.

Address (Hexadecimal) XXXX (PC) XXXX+1 (PC)

Instrucciones (Assembly Language) NOP IN 00 ORI 07 CMA OUT 00 JMP XXXX DB 00

Lenguaje maquina (Hexadecimal) 00 F6 07 2F D3 00 C3 35 97

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

luego de esto se realiza un complemento en el acumulador, presentando el resultado en puerto 00.

3. Ingrese el programa y crralo. Verifique sus predicciones.

Figura 6.0 Ejercicio VI GNUSIM8085

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.

Address (Hexadecimal) XXXX

Instrucciones (Assembly Language) NOP MVI A, 070h MVI B, 0ACh XRA B STA C012 HLT

Lenguaje maquina (Hexadecimal) 00 3E 70 06 AC A8 32 12 C0 76

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

3. Ingrese el programa y crralo. Verifique sus predicciones.

Figura 7.0 Ejercicio VII GNUSIM8085

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.

Address (Hexadecimal) XXXX

Instrucciones (Assembly Language) NOP MVI A, 099h ANI 01h JNZ ETIQUETA1 MVI A, 0CCh JMP PRESENTA ETIQUETA1: MVI A, 0F PRESENTA: OUT 00 HLT

Lenguaje maquina (Hexadecimal) 00 3E 99 E6 01 C2 F1 CF 3E CC C3 F3 CF 3E 0F D3 00 76

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.

Figura 8.0 Ejercicio VIII GNUSIM8085

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.

Address (Hexadecimal) XXXX

Instrucciones (Assembly Language) NOP IN 00 LAZO: INR B SUI 057h JNZ LAZO MVI A, 0FFh OUT 00 HLT

Lenguaje maquina (Hexadecimal) 00 DB 00 04 D6 57 C2 47 EF 3E FF D3 00 76

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).

3. Ingrese el programa y crralo. Verifique sus predicciones.

Figura 9.0 Ejercicio IX GNUSIM8085

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.

Address (Hexadecimal) XXXX

Instrucciones (Assembly Language) NOP TOPE: IN 00 CMI 99 JNC TOPE MVI A, EE OUT 00 HLT

Lenguaje maquina (Hexadecimal) 00 DB 00 FE 99 D2 C5 3E EE D3 00 76

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.

3. Ingrese el programa y crralo. Verifique sus predicciones.

Figura 10. Ejercicio X GNUSIM8085

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)

Figura 11.0 Ejercicio XI a) b) GNUSIM8085

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)

c) Figura 12.0 Ejercicio XII a) b) c) GNUSIM8085

Das könnte Ihnen auch gefallen