MICROPROCESADORES Y MICROCONTROLADORES - UNAD
Práctica N°3: Programación de microprocesadores con Simuproc
Cristian Cristian Ar dila Jaqueli ne Combita Car oli ol i na Gómez Gómez Camilo Galindo
[email protected]
Resumen Para el desarrollo de este trabajo se — — Para empleara el uso de la herramienta Proteus 7.5, en la que se diseñarán 2 programas,
Palabras Clave —Programación,
Calculadora,
Diagrama
de
Diagramas de flujo,
flujo,
Ensamblador,
Simuproc. Abstract---For
Un editor con resaltador de sintaxis para escribir programas más fácilmente. Un conversor de bases (para hacer pasajes de una base origen a otra base destino, soportando todas las bases desde base 2 a base 36). Conversión de números de punto flotante de decimal a IEEE 754 y viceversa.
the development of this work employed
the use of the tool SIMUPROC, which was designed two programs, the first of which will allow me to receive all four numbers and perform basic arithmetic operations, the second program is going to represent the solution mathematics to a problem, in this case the program is
El simulador solo reconoce lenguaje ensamblador el cual es un lenguaje que utiliza nemónicos para la escritura de cualquier programa. Luego de realizar el programa lo cargamos en el simulador. De la siguiente manera podemos hacerlo:
going to system the equations lineal the tree or tree.
I. INTRODUCCION
El presente informe se basa en el esfuerzo de la programación en lenguaje ensamblador para microprocesadores usando el simulador SIMUPROC descrito en la unidad, el cual es una herramienta básica para el aprendizaje de dicho lenguaje de programación.
II. SIMUPROC
Simuproc es un simulador de un proceso hipotético con el cual tiene por objetivo el aprendizaje de nociones básicas para empezar a programar en lenguaje ensamblador, en el cual se puede visualizar todo el proceso interno de ejecución del programa a través de cada ciclo del procesador. procesador.
El simulador incluye:
1-Se puede cargar desde un archivo. 2-Usando el editor interno.
3-Ingresando las instrucciones manualmente.
Componentes del Simuproc
Memoria La memoria es el dispositivo que almacena toda la información del programa mientras está corriendo, tanto datos como instrucciones.
La capacidad de la memoria simulada es de 4096 posiciones de 16 bits cada una: desde 0 a 4095 en decimal.
Registros Generales Este procesador consta de 3 registros de propósito general, AX, BX y CX, cada uno con 16 bits de capacidad, registros apuntadores, registros de pila y registros de control.
Como registros apuntadores tenemos:
MICROPROCESADORES Y MICROCONTROLADORES - UNAD
PC: Contador de programa. MAR: Registro de dirección de memoria. MDR: Registro de dato de memoria. IR: Instrucción de registro.
Pantalla principal del simulador:
Instrucciones básicas para realizar algún tipo de programa Editor de texto
Pantalla de simulación del programa
ADD [mem]: Sumar: AX = AX + mem. ADD [mem]: Suma números de 32 bits. AND [dest, orig]: Y lógico. CLA: Hace AX = 0. CLC: Limpia el Carry Flag. C = 0. CMC: Complementa (invierte) el Carry Flag. CMP [mem]: Compara AX con [mem]. DEC [dest]: Decremento en 1 el destino especificado. DIV [mem]: Dividir: AX = AX / el contenido de la dirección de memoria. DIVF [mem]: División: BX y AX = BX y AX / [mem]y mem+1, en CX queda el residuo de la división en enero de 16 bits. EAP: Escribe en Pantalla el contenido del registro AX. FTOI: Conversión de Real a Entero. HLT: Terminar Programa. IN [registro, Puerto]: Lleva al Registro el valor retornado por el puerto especificado. INC [dest]: Incrementa en 1 el destino especificado. ITOF: Conversión de Entero a Real. JC [mem]: Saltar si el Carry Flag esta activado. JEQ [mem]: Saltar si son iguales Si Z = 1, PC = contenido de la memoria. JMA [mem]: Saltar si es Mayor. Si Z = 0 y N = 0, PC = contenido de memoria. JME [mem]: Saltar si es Menor. Si N = 1, PC = contenido de la memoria.
MICROPROCESADORES Y MICROCONTROLADORES - UNAD
JMP [mem]: Salto incondicional. PC = dirección de memoria donde está la siguiente instrucción a ejecutar". JNC [mem]: Saltar si el Carry Flag no está activado. Si C = 0, PC = contenido de memoria JNE [mem]: Saltar si no son iguales. Si Z = 0, PC = contenido de memoria. JNO [mem]: Saltar si el Overflow Flag no está activado. Si O = 0, PC = contenido de memoria. JO [mem]: Saltar si el Overflow Flag esta Activado. LDA [mem]: Cargue en AX el contenido de la dirección de Memoria especificada. (hay casos donde es mejor usar MOV si se desea pasar datos sin tener que pasarlos por AX). LDB [mem]: La instrucción carga en AX el contenido de memoria almacenado en [mem] + BX. LDF [mem]: Carga en BX y AX un número de 32 bits (IEEE) que está almacenado en la dir [mem] y mem+1. En BX quedan los dígitos más Significativos. LDT: Lee un valor del Teclado y lo lleva al registro AX. LOOP [mem]: Decremento CX y salta a la Pos de memoria si CX no es cero. MOV [dest, orig]: Copia el valor almacenado en el origen al destino. El destino y/o origen pueden ser registros o direcciones de memoria o combinación de estos. MSG: Muestra un mensaje en pantalla. MUL [mem]: Multiplicar: AX = AX * el contenido de la dirección de memoria. MULF [mem]: Multiplicación: BX y AX = BX y AX * [mem]y mem+1. NOP: Esta operación no hace nada. NOT [destino]: NO lógico, invierte los bits del operando formando el complemento del primero. OR [dest, orig]: O inclusive lógico, todo bit activo en cualquiera de los operándoos será activado en el destino. OUT puerto, registro: Escribe en el puerto especificado, el valor del registro. POP [registro]: Trae de la Pila el último valor llevado por PUSH (indicado por el registro SP) y lo almacena en el registro especificado. PUSH [registro]: Envía el valor del registro especificado a la pila. ROL [dest, veces]: Rota los bits a la izquierda las veces especificadas (en decimal), los bits que salen por la izquierda re-entran por la Derecha. En el Carry Flag queda el último bit rotado. ROR [dest, veces]: Rota los bits a la derecha las veces especificadas (en decimal), los Bits que salen por la derecha re-entran por la izquierda. El Carry Flag guarda el último bit rotado. SHL [dest, veces]: Desplaza los bits a la izquierda el número de veces especificado (en decimal),
agregando ceros a la derecha, el Carry Flag guarda último bit desplazado. SHR [dest, veces]: Desplaza los bits a la Derecha el número de veces especificado (en decimal), agregando ceros a la izquierda, el Carry Flag guarda último bit desplazado. STA [mem]: Guarde el contenido de AX en la dirección de Memoria especificada. STB [mem]: guarda el contenido de AX en la dirección [mem] + BX. STC: Pone el Carry Flag. C = 1. STF [mem]: Guarda en [mem] y mem+1 el contenido de BX y AX.
III. PRACTICA
1.
Diseñar un programa que permita recibir números y realizar las cuatro operaciones básicas de suma, resta, multiplicación y división utilizando una interfaz de usuario adecuada y de fácil manejo.
El Diagrama de flujo es: Inicio
Pedir datos a procesar
Preguntar Opción
Opción 1
Si
Sumar datos
Si
Restar datos
Si
Multiplicar datos
Si
Dividir Datos
No
Opción 2
No
Opción 3
No
Opción 4
Mostrar Resultado
El programa es: ; Calculadora MSG 'Calculadora Camilo G'
MICROPROCESADORES Y MICROCONTROLADORES - UNAD
MSG '1: Sumar' MSG '2: Restar' MSG '3: Multiplicar' MSG '4: Dividir' MSG '0: Salir' MSG 'Que Operación desea realizar:?' LDT 'Opción:' CMP 43 JMA 0 CMP 44 JEQ 2D MOV 3C,AX LDT 'Digite el primer número:' MOV 3A,AX LDT 'Digite el segundo número:' MOV 3B,AX MOV AX,3C CMP 40 JEQ 1A CMP 41 JEQ 01E CMP 42 JEQ 22 CMP 43 JEQ 26 MOV AX,3A ADD 3B EAP 'El resultado de la suma es:' JMP 0 MOV AX,3A SUB 3B EAP 'El resultado de la resta es:' JMP 0 MOV AX,3A MUL 3B EAP 'El resultado de la multiplicación es:' JMP 0 LDA 3B CMP 47 JEQ 60 MOV AX,3A DIV 3B EAP 'El resultado de la división es:' JMP 0 MSG 'Gracias' HLT #40 1 10 11 100
0 #60
MSG 'Error al dividir por 0' JMP 0
IV. CONCLUSIONES
Fue de gran importancia el desarrollo de estas prácticas ya que nos involucramos con un lenguaje de programación, el cual nos servirá para desarrollar proyectos en nuestro hacer diario.
Otro aspecto importante es el trabajar con un software desconocido por nosotros llamado Simuproc, el cual es una herramienta poderosa a la hora de hacer programas en assembler. Nos obligo a aprender a manejar un nuevo tipo se software.
V. R EFERENCIAS
[1] http://sites.google.com/site/simuproc/ [2] http:// simuproc.cjb.net/