PRACTICA N°1 MICROPROCESADORES Y MICROCONTROLADORES MICROCONTROLADORES
MARISOL CONTRERAS PLAZAS COD. 1049606701
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA “UNAD” ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA “ECBTI” TUNJA 2012
INTRODUCCION
El ingeniero electrónico realiza simulaciones de procesos llevados a cabo por los microprocesadores. Se puede hacer uso de simuladores para hacer un acercamiento a un proceso de control que pueda llevar a cabo una maquina industrial. O simular maquinas procesadoras de datos simplemente. En la presente obra el autor realiza una presentación del simulador SIMUPROC y se lleva a cabo la simulación de una maquina calculadora básica. Se presentan las instrucciones utilizadas por el programa y las instrucciones que serán utilizadas para la ejecución del programa. Además se hará uso del software Visio para la realización de diagramas de flujo.
DESARROLLO DE LA PRÁCTICA
CALCULADORA BASICA Empecemos con la descripción del programa: •
•
•
•
•
Este empieza mostrando el nombre del programa y preguntando por la operación a realizar. Luego se lee la variable ‘OP’ y dependiendo del dato ingresado el programa se va por uno de los cuatro ramales o subrutinas de cada una de las cuatro operaciones. Cada una de estas cuatro operaciones consta básicamente del ingreso de los dos operandos ‘a’ y ‘b’ y su lectura, luego la operación respectiva y por último la salida a pantalla del resultado obtenido. Luego de salir de la operación, o si no se digita una operación correcta, el programa pregunta si quiere continuar o salir. Después se lee la variable ‘SALIR’ y luego a través de un condicional se finaliza o se continúa con el programa.
Ahora veamos el diagrama de flujo:
INICIO CALCULADORA BASICA
INGRESE LA OPERACION
LEA OP
SI
OP = SUMA ?
INGRESAR
LEA a y b
SUMA =
MOSTRAR SUMA
OPERANDOS a+b
NO
SI
OP = REST A?
INGRESAR
LEA a y b
OPERANDOS
RESTA =
MOSTRAR
a-b
RESTA
MULTIPLIC.= a*b
MOSTRAR
NO
OP = MULTI P?
INGRESAR
LEA
OPERANDOS
ayb
SI
MULTIPLIC
NO
OP = DIV?
SI
INGRESAR OPERANDOS
NO SALIR O CONTINUAR
LEA SALIR
NO
SALIR = SI ?
LEA
DIVISION =
MOSTRAR
a/b
DIVISION
ayb
SI
FIN
Después de tener el diagrama de flujo de lo que queremos hacer, entonces empezamos a trabajar en assembler el código fuente el cual se trabajó en Simuproc en su editor 2. El código fuente es: #SimuProc 1.4.3.0 MSG Calculadora Básica INC 041 INC 042 INC 042 MOV 043,042 INC 043 MOV 044,043 INC 044 LDT Ingrese 1 para sumar, 2 para restar, 3 para multiplicar y 4 para dividir. CMP 041 JEQ 012 CMP 042 JEQ 018 CMP 043 JEQ 01E CMP 044 JEQ 024
JNE 02B LDT Ingrese el primer sumando. MOV 045,AX LDT Ingrese el segundo sumando. ADD 045 EAP El resultado de la suma es: JMP 02B LDT Ingrese el sustraendo. MOV 045,AX LDT Ingrese el minuendo. SUB 045 EAP El resultado de la resta es: JMP 02B LDT Ingrese el primer factor. MOV 045,AX LDT Ingrese el segundo factor. MUL 045 EAP El resultado del la multiplicación es: JMP 02B LDT Ingrese el divisor. MOV 045,AX LDT Ingrese el dividendo. DIV 045 EAP El cociente de la división es: MOV AX,BX
EAP El residuo de la división es: LDT Ingrese 1 para continuar o 0 para salir. CMP 040 JNE 008 MOV 041,040 MOV 042,040 MOV 043,040 MOV 044,040 MOV 045,040 HLT
La descripción de este código es la siguiente: •
•
•
•
•
•
•
•
Primero se muestra el nombre del programa. Luego se establecen unas constantes, para el menú de las operaciones, que se almacenan en unas localidades de memoria. Acto seguido se pide que ingrese un número para elegir la operación, si el dato no se encuentra dentro del menú el programa salta donde se da la opción de continuar o salir. Por medio de unas comparaciones y saltos el programa lo lleva a una de las cuatro operaciones. Luego ya, en la operación, el programa le pide el primer operando el cual se almacena en una localidad de memoria. Después pide el segundo operando para luego hacer la operación respectiva con el primero almacenado en memoria. Luego se muestra el resultado y salta a la opción de continuar o salir. Dependiendo del dato ingresado el programa vuelve a preguntar por la operación a realizar o sale y muestra algunas estadísticas de operación.
Una vez generado este código en el editor 2 de Simuproc, entonces se pasa al editor 1 para luego cargarlo en memoria, en este paso se depura el programa puesto que el simulador tiene una herramienta para corregir errores. Una vez el programa se encuentra en memoria, éste se ejecuta para ver los resultados, si hay errores se corrigen en el editor 2 y se repite le proceso hasta que se obtienen los resultados esperados. Ya superado todo esto se guarda en un archivo *.smp o ejecutable.
EVIDENCIA FOTOGRAFICA DEL PROCESO DE PROGRAMACION
Utilizar el simulador
Editor
Pasar a memoria
Ejecutar programa
Registros de Operación
SISTEMA DE ECUACIONES 2X2
Describamos el programa: •
Se empieza mostrando el nombre del programa.
•
Luego se pide ingresar las constantes de la pri mera ecuación.
•
Se almacenan como ‘X1’, ‘Y1’ e ‘I1’.
•
Se pide ingresar las constantes de la segunda ecuación.
•
Se almacenan como ‘X2’, ‘Y2’ e ‘I2’.
•
•
•
Luego se establecen unas variables y se realizan algunas operaciones tendientes a hallar el valor de la variable ‘y’. Luego se muestra su valor. Después, con la ayuda de este último valor, se calcula el valor de la variable ‘x’.
•
Luego se muestra su valor.
•
Después se da la opción de continuar o salir.
•
Se lee la variable ‘SALIR’.
•
Dependiendo de su valor se continúa de nuevo pidiendo el ingreso de las constantes de la primera ecuación o se sale del programa.
Veamos el diagrama de flujo del algoritmo del programa:
INICIO RESOVER ECUACIONES 2X2 A = -X1*Y2
B = -X1*I2
CONTINUAR SALIR LEA =X2*Y1 LEA FDY2, =/=X1 B+D I2ECUACION2 ECUACION1 INGRESAR MOSTRAR X -X1 =X1,Y1,I1 0G) –O X =A+C (I1=X2, –Y*Y1 X1 G Y F/E CE =CONSTANTES X2*I1 MOSTRAR Y
FIN
LEA SALIR
NO
SI SALIR = SI?
Ahora mostremos el código en ensamblador del programa: #SimuProc 1.4.3.0 MSG Programa para resolver un sistema de ecuaciones 2x2. LDT Ingrese el coeficiente de x de la ecuación 1. MOV 040,AX LDT Ingrese el coeficiente de y de la ecuación 1. MOV 041,AX LDT Ingrese el término independiente de la ecuación 1. MOV 042,AX LDT Ingrese el coeficiente de x de la ecuación 2. MOV 043,AX LDT Ingrese el coeficiente de y de la ecuación 2. MOV 044,AX LDT Ingrese el término independiente de la ecuación 2. MOV 045,AX MOV AX,040 MUL 044 MOV 046,AX MOV AX,040 MUL 045 MOV 047,AX MOV AX,043 MUL 041 MOV 048,AX MOV AX,043 MUL 042 MOV 049,AX
MOV AX,048 SUB 046 MOV 04A,AX MOV AX,049 SUB 047 DIV 04A EAP la variable y es igual a: MUL 041 MOV 04B,AX MOV AX,042 SUB 04B DIV 040 EAP La variable x es igual a: LDT Ingrese 1 para continuar o 0 para salir. CMP 050 JNE 001 MOV 040,050 MOV 041,050 MOV 042,050 MOV 043,050 MOV 044,050 MOV 045,050 MOV 046,050 MOV 047,050 MOV 048,050 MOV 049,050 MOV 04A,050 MOV 04B,050
HLT
Este código es muy parecido a la descripción que se hizo al principio, del diagrama de flujo, salvo que al final he decidido añadir unas instrucciones para limpiar las posiciones de memoria que se utilizaron. Los pasos siguientes son iguales a los de la calculadora básica.
EVIDENCIA FOTOGRAFICA DEL PROCESO DE PROGRAMACION Utilizar el simulador
Registros de Operación
CONCLUSIONES
•
Trabajando con este simulador me he dado cuenta que no acepta números negativos y con punto decimal a la entrada, tampoco da resultados con punto decimal, pero si nos da resultados negativos si la operación los genera. Estos ejercicios me han ayudado a afianzar conocimientos acerca de cómo funciona el sistema de cómputo de un computador y además me ha enseñado a manejar y dominar un poco más el lenguaje ensamblador.