Sei sulla pagina 1di 9

Departamento de Eléctrica y Electrónica

Carrera de Electrónica y Automatización

MICROPROCESADORES Y MICROCONTROLADORES

Práctica 1.9

EJERCICIOS DE PROGRAMACIÓN EN DIRECCIONAMIENTO


DIRECTO

Autor:
Diego Cunalata Orellana

Docente:
Ing. Amparo Meythaler

NRC: 7803
1) OBJETIVOS

• Identificar la forma de realizar Diagramas de Flujo para resolver ejercicios


con el Microprocesador 8086.
• Identificar la forma de correr programas en forma total en el EMU86.
• Realizar ejercicios de programación en Direccionamiento Directo.

2) MARCO TEORICO PROCESOS PARA LA CREACIÓN DE UN PROGRAMA

Para la creación de un programa es necesario seguir cinco pasos: Diseño del algoritmo,
codificación del mismo, su traducción a lenguaje máquina, la prueba del programa y la
depuración.

En la etapa de diseño se plantea el problema a resolver y se propone la mejor solución,


creando diagramas de flujo o esquemáticos utilizados para el mejor planteamiento de la
solución. La codificación del programa consiste en escribir el programa en algún lenguaje
de programación (en este caso en ensamblador 8086), tomando como base la solución
propuesta en el paso anterior. La traducción al lenguaje máquina es la creación del
programa objeto, esto es, el programa escrito como una secuencia de ceros y unos que
pueda ser interpretado por el procesador. La prueba del programa consiste en verificar
que el programa funcione sin errores, o sea, que haga lo que tiene que hacer. La última
etapa es la eliminación de las fallas detectadas en el programa durante la fase de prueba.
La corrección de una falla normalmente requiere la repetición de los pasos comenzando
desde el primero o el segundo.

3) EQUIPOS Y MATERIALES
PC con el paquete EMU86.
4) ACTIVIDADES
1) Analizar el dato de la localidad [0400] y si es par, en la localidad [0401] poner el
dato que hay en la localidad de análisis, caso contrario en la [0401] colocar el
Negativo del dato analizado (o Complemento a 2).
• Realice el diagrama de flujo.
• Codifique con las instrucciones del Microprocesador 8086.
org 100h MOV
AH,0FFH
MOV AL,00H ADD AL,[400H]
JP UNO
JMP DOS DOS:
SUB AH,[400H]
INC AH
MOV AL,AH UNO: MOV [401H],AL
HLT
• Coloque un dato en la localidad [400].
Caso 1: [400] = A8
Caso 2: [400] = A9
• Corra en el ejercicio en forma total y verifique el resultado.
CASO 1
En este primer caso se colocó en la localidad [400] un valor de A8 por lo tanto
este valor no tiene paridad entonces realiza la negación del dato ingresado para
este caso es 58, el resultado de la negación se guardará en la localidad [401].

Ilustración 1 Resultado del primer caso en la localidad [401]

• Repita el corrido cambiando los datos de la localidad [400].


CASO 2
En este segundo caso se colocó en la localidad [400] un valor de A9 por lo tanto
este valor si tiene paridad entonces guardará el dato ingresado directamente en la
localidad [401].

Ilustración 2 Resultado del segundo caso en la localidad [401]

2) Del dato de la localidad [1000] restar el dato de la localidad [1001]. Colocar la


respuesta a continuación de las localidades de análisis.
• Realice el diagrama de flujo.
• Codifique con las instrucciones del Microprocesador 8086.
org 100h
MOV AL,[1000H]
MOV AH, 00H
MOV BL,[1001H]
MOV BH,00H
SUB AX,BX
MOV [1002H],AX
HLT
• Coloque datos en las localidades [1000] y [1001].
Caso 1: [1000]=C9
[1001]=EF
Caso 2: [1000]= EF
[1001]=C9

• Corra en el ejercicio en forma total y verifique el resultado.


CASO 1

En este primer caso se colocó en la localidad [1000] un valor de C9 y en la localidad


[1001] un valor de EF por lo tanto al realizar esta operación lleva un acarreo al final,
el resultado se colocará en la localidad [1002] y en la localidad [1003] se colocaría 01
ya que existe un acarreo final.

Ilustración 3 Resultado de la resta del primer caso si n acarreo

• Repita el corrido cambiando los datos de las localidades [1000] y [1001].


CASO 2
En este segundo caso se colocó en la localidad [1000] un valor de EF y en la localidad
[1001] un valor de C9 por lo tanto al realizar esta operación NO lleva un acarreo al
final, el resultado se colocará en la localidad [1002] y en la localidad [1003] se
colocaría 00 ya que no existe un acarreo final.

Ilustración 4 Resultado de la resta del segundo caso con acarreo

3) RESULTADOS
• Explique los errores cometidos en los ejercicios realizados (si los tuvo) y la forma
de corregirlos.

Para el ejercicio 1, tuve un inconveniente que para analizar el valor de la bandera de


paridad PF, fue obligatorio realizar una suma entre la localidad [400] con un valor de 00
ya que la suma para 00 no altera el valor real, entonces con el resultado de esta operación
se puede analizar la bandera PF y realizar un salto condicionado en este caso que si existe
paridad salte y si no existe que realice la negación del valor colocado en la localidad
[400].

• Explique otra forma (otro algoritmo) de resolver el primer ejercicio de la guía.


Para reducir las líneas de código se puede tomar una sola instrucción que omite los pasos
de la sustracción y el incremento para realizar la negación del número que no tenga
paridad; se puede utilizar la instrucción NEG.
org 100h
MOV AL,00H
ADD AL, [400H]
JP UNO
JMP DOS DOS:
NEG AL
UNO: MOV [401H], AL
HLT
4) DIAGRAMA DE FLUJO

Ilustración 5 Diagrama de flujo del Ejercicio Nº1


Ilustración 6 Diagrama de Flujo del Ejercicio Nº2

M
OV
5) PROGRAMA Ejercicio Nº1 AL
org 100h ,
MOV AH,0FFH [10
MOV AL,00H 00
ADD AL, [400H] H]
JP UNO SUB AL, [1001H]
JMP DOS DOS: MOV [1002H], AL
SUB AH, [400H] JC UNO
INC AH M
MOV AL, AH O
UNO: MOV [401H], AL V
HLT
A
H
,
0
0
H
Ejercicio
Nº2 org J
100h M
P D
DO O
S: S
UN :
O:
MO MOV [1003H], AH
V HLT
AH,
01H
6) CONCLUSIONES

EL programa EMU8086 dispone de una interfaz muy práctica y entendible, lo cual


permite verificar paso a paso las instrucciones establecidas previamente al momento de
compilar.

Los saltos condicionados son de gran importancia para que el programa tome una
decisión y realice la instrucción luego de haber analizado la condición dada.

El salto incondicionado de igual manera es de gran ayuda para que realice un salto a la
última instrucción y finalice el programa, luego de ser analizado por el salto de condición,
ya que toma estos dos caminos uno que cumple y el otro que no.

Para que un programa sea sencillo y optimizar líneas de código, se puede utilizar las
diferentes instrucciones antes ya vistas, como las aritméticas, lógicas, de rotación, de
transferencia etc.; aplicando en casos que sean necesarios.

7) RECOMENDACIONES

Para la simulación de los ejercicios dados, se recomienda utilizar etiquetas para cierto
grupo de instrucciones donde se requiera realizar el salto si cumple la condición, ya que, si
no se utiliza, las direcciones IP pueden no ser predecibles y no podría cerrarse el bucle.

Se recomienda tener una idea clara para resolver los ejercicios dados, luego de tener la
idea de cómo se va a realizar, plasmar en un diagrama de flujo, el cual este debe estar claro
para que sea analizado y entendible para otras personas.

Se recomienda tener claro cómo funcionan las diferentes instrucciones ya antes vistas,
para aplicarlas correctamente en la ejecución del programa y así poder comprobar lo teórico
con la práctica.

8) BIBLIOGRAFIA/LINKOGRAFÍA

Bibliografía
GONZALEZ, M. (2011). Universidad de Sevilla . Obtenido de
https://www.cs.buap.mx/~mgonzalez/asm_mododir2.pdf
https://issuu.com/eslibre.com/docs/programaci__n_en_ensamblador_para_p

Potrebbero piacerti anche