Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
microprocesadores y microcontroladores
1. MICROPROCESADORES Y MICROCONTROLADORES 1
LABORATORIO DE MICROPROCESADORES Y
MICROCONTROLADORES CON SIMUPROC PRACTICA Nº 1
EDILBERTO RODRIGUEZ
87433289
Abst
ract
This report presents the general conclusions
from the experience in Practice No.
1, deepening the basic theoretical issues covered
in the course of Microprocessors
and Microcontrollers,
first begin with the design of a program
that receives numbers
and perform the
four operations arithmetic, secondly
designing a program that solves
mathematical problems of area and volume through
the simulator is achieved SimuProc design and
implement programs.
Keywords-Arithmetic, Flowchart, Assembler,
SimuProc.
Resu
men
En este informe se presentan las conclusiones
generales de la experiencia vivida en la
Practica N° 1, profundizando los temas teóricos
básicos tratados en el curso de
Microprocesadores y Microcontroladores,
primero iniciaremos con el diseño de un
programa que recibe números y realiza las
cuatro operaciones Aritméticas, en segundo
lugar se diseña un programa que da solución
matemática a problemas de área y volumen; por
medio del Simulador SIMUPROC se logra diseñar
y ejecutar los programas.
Palabras Clave—Operaciones Aritméticas,
Diagrama de flujo, Ensamblador, Simuproc
1. Introducción
Este informe incluye las descripciones completas
del desarrollo del laboratorio generación del
pseudocódigo, edición del código fuente,
compilación, depuración y simulación del
programa; cumpliendo de esta forma con el
proceso de desarrollo de programas en
lenguaje maquina con el Simulador Simuproc. .
2. 2. INFORME LABORATORIO
Nº 1
2.1 PRACTICA
Nº 1
TITULO: DISEÑO DE UNA
CALCULADORA.
OBJETIVO: Diseñar un programa que permita recibir
números y realizar las cuatro operaciones aritméticas
básicas, suma, resta, multiplicación y división..
Te
orí
a
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.
El simulador
incluye:
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.
El simulador solo reconoce lenguaje ensamblador el cual
es un lenguaje de programación de bajo nivel; por lo
tanto para ejecutar programas en el simulador, se deben
escribirlos primero en este lenguaje.
Luego de tener el programa ya en lenguaje
ensamblador se carga en el simulador. Para ello existen
tres alternativas:
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 que se ejecuta, tanto
datos como
instrucci
ones.
3. MICROPROCESADORES Y MICROCONTROLADORES 2
La capacidad de la memoria simulada es de 4096
posiciones de 16 bits cada una: desde 0 a 4095 en decimal.
- Registros
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. Los registros apuntadores son:
• PC: Contador de programa.
• MAR: Registro de dirección de memoria.
• MDR: Registro de dato de memoria.
• IR: Instrucción de registro.
En la figura que viene a continuación se mostrara la pantalla
principal del simulador, el editor de programa, pantalla del
programa y el conversor de bases.
. Fig. 1. Pantalla principal del Samuro.
Fig. 4 Conversor de bases
Instrucciones del simulador
A continuación se mostraran ordenadas alfabéticamente
las instrucciones que incluye el simulador.
Fig. 2 Editor de 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
4. [mem].
DEC [dest]: Decremento en 1 el destino
especificado.
DIV [mem]: Dividir: AX = AX / el contenido de la
dirección de memoria.
5. MICROPROCESADORES Y MICROCONTROLADORE
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
memor
ia.
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
memor
ia.
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 digitos más Significativos.
LDT: Lee un valor del Teclado y lo lleva al registro AX.
LOOP [mem]: Decrementa 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
p
i
l
a
.
ROL [dest, veces]: Rota los bits a la izquierda las
veces
especificadas (en decimal), los bits que salen por la
izquierda
6. re-entran por la Derecha. En el Carry Flag queda el
ultimo 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
ultimo 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.
SUB [mem]: Restar: AX = AX - el contenido de la
dirección
de memoria.
SUBF [mem]: Resta el numero de 32 bits: BX y AX =
BX y
AX - [mem] y mem+1.
XAB: Intercambia los valores de los registros AX y BX
(Esta
instrucción no necesita parámetros).
XOR [dest, orig]:O exclusivo, realiza un O exclusivo
entre
los operandos y almacena el resultado en destino.
Ejer
cicio
Diseñar un programa que permita recibir números y
realizar las cuatro operaciones básicas de suma, resta,
multiplicación y
7. MICROPROCESADORES Y MICROCONTROLADORES 4
división utilizando una interfaz de usuario adecuada y de
fácil manejo.
Paso 1:
Establecer las variables, constantes y demás
parámetros relevantes en el diseño del algoritmo.
Captu
rar x
Mientras
0>x<6
Digite primer
numero
Captu
rar y
Digite segundo
numero
Captu
rar z
Si
x =
1
y=
y +
z
Mostrar “Resultado igual
a:” z
S
i
n
o
Si
x =
2
y=
y -
z
Mostrar “Resultado igual
a:” z
S
i
n
o
Si
x =
3
y=
y *
z
Mostrar “Resultado igual
a:” z
S
i
n
o
Si
x =
2
y=
y /
z
Mostrar “Resultado igual
a:” z
S
i
n
o
F
i
n
8. S
i
F
i
n
S
i
F
i
n
S
i
F
i
n
S
i
Fin
Mientra
s
F
i
n
Algor
itmo
Paso
2:
Fig. 5 Diagrama de
Flujo
; Bienvenidos a la Calculadora Zona Eje
Cafetero MSG 'Calculadora'; Muestra un
mensaje en pantalla MSG '1: Sumar'; Muestra
un mensaje en pantalla MSG '2: Restar';
Muestra un mensaje en pantalla MSG '3:
Multiplicar'; Muestra un mensaje en pantalla
MSG '4: Dividir'; Muestra un mensaje en
pantalla MSG '0: Salir'; Muestra un mensaje en
pantalla
MSG 'Que Operación desea realizar?'; Muestra un
mensaje en pantalla
LDT 'Opción:'; Lee un valor del Teclado y lo lleva al
registro
AX
CMP 43; Compara AX con [mem]
JMA 0; Saltar si es Mayor. Si Z = 0 y N = 0, PC =
contenido
de memoria
CMP 44; Compara AX con [mem]
JEQ 2D; Saltar si son iguales Si Z = 1, PC = contenido
de la memoria.
MOV 3C,AX; Copia el valor almacenado en el
origen al
Generar el código
fuente
Pseudocódigo.
Mostrar “Opciones
1. Sumar
2. Restar
3. Multiplicar
4. Dividir
5. Salir
Digite opción=n:
destino
LDT 'Digite el primer número:'; Lee un valor del
Teclado y lo lleva al registro AX
MOV 3A,AX; Copia el valor almacenado en el
origen al destino
LDT 'Digite el segundo número:'; Lee un valor del
Teclado y lo lleva al registro AX
MOV 3B,AX; Copia el valor almacenado en el
origen al destino
MOV AX,3C; Copia el valor almacenado en el
origen al destino
9. MICROPROCESADORES Y MICROCONTROLADORES 5
CMP 40; Compara AX con [mem]
JEQ 1A; Saltar si son iguales Si Z = 1, PC = contenido
de la
memoria.
CMP 41; Compara AX con [mem]
JEQ 01E; Saltar si son iguales Si Z = 1, PC = contenido
de la memoria.
CMP 42; Compara AX con [mem]
JEQ 22; Saltar si son iguales Si Z = 1, PC = contenido
de la
memoria.
CMP 43; Compara AX con [mem]
JEQ 26; Saltar si son iguales Si Z = 1, PC = contenido
de la memoria.
MOV AX,3A; Copia el valor almacenado en el
origen al destino
ADD 3B; Sumar: AX = AX + mem
EAP 'El resultado de la suma es:'; Escribe en
Pantalla el
contenido del registro AX
JMP 0; Salto incondicional. PC = dirección de
memoria
donde está la siguiente instrucción a ejecutar
MOV AX,3A; Copia el valor almacenado en el origen
al
destino
SUB 3B; Restar: AX = AX - el contenido de la dirección
de
memoria
EAP 'El resultado de la resta es:'; Escribe en
Pantalla el
contenido del registro AX
JMP 0; Salto incondicional. PC = dirección de
memoria
donde está la siguiente instrucción a ejecutar
MOV AX,3A; Copia el valor almacenado en el origen
al
destino
MUL 3B; Multiplicar: AX = AX * el contenido de la
dirección
de memoria
EAP 'El resultado de la multiplicación es:'; Escribe
en
Pantalla el contenido del registro AX
JMP 0; Salto incondicional. PC = dirección de
memoria
donde está la siguiente instrucción a ejecutar
LDA 3BCMP 47; Compara AX con [mem]
JEQ 60; Saltar si son iguales Si Z = 1, PC = contenido
de la memoria.
MOV AX,3ª; Copia el valor almacenado en el
origen al destino
DIV 3B; Dividir: AX = AX / el contenido de la
dirección de memoria
EAP 'El resultado de la división es:'; Escribe en
Pantalla el contenido del registro AX
JMP 0; Salto incondicional. PC = dirección de
memoria donde está la siguiente instrucción a ejecutar
MSG “Hasta una próxima oportunidad” ; Muestra un
mensaje en pantalla
MSG “Gracias por utilizar este programa” ; Muestra
un mensaje en pantalla
HLT; Terminar Programa
#40
1
10
11
100
0
#60
MSG 'Error al dividir por 0'; Muestra un mensaje en pantalla
10. JMP 0; Salto incondicional. PC = dirección de
memoria donde está la siguiente instrucción a ejecutar
P
a
s
o
3
:
Simulación en
SIMUPROC:
Procedemos a escribir el código en el editor 2, luego lo
pasamos al editor uno y lo enviamos a la memoria
para verificar si hay errores.
Fig. 6 Edicion del programa en el
editor
P
a
s
o
4
:
El siguiente paso es Ejecutar el
programa
Fig. 7 Ejecucion del
programa
Luego de ejecutar el programa nos pregunta que
operación deseamos efectuar y los dígitos que van a
interactuar en la operación.
12. MICROPROCESADORES Y MICROCONTROLADORES 7
Fig. 12 Estadisticas de la
simulacion
2.2 PRACTICA
Nº 1.1
TITULO: DISEÑO UNA SOLUCION MATEMATICA
PARA HALLAR AREA Y VOLUMEN.
OBJETIVO: Diseñe un programa que permita
representar la solución matemática a un problema, por
ejemplo hallar el área, el volumen, o encontrar la
solución a un sistema de ecuaciones lineales, puede optar
por sistemas básicos 2x2, 3x3 o un programa que halle la
solución a un sistema nxn.
Para este ejercicio el programa que se realizo fue el de
calcular las areas de un rectángulo o cuadrado y la de un
triangulo, y el volumen de un cubo.
MSG 'CALCULO DE AREAS Y VOLUMENES -
UNAD CAFETERO'; Mensaje en pantalla
MSG 'SELECCIONE LA TAREA A
REALIZAR';
Mensaje en
pantalla
MSG '1 AREA DEL CUADRADO O
RECTANGULO';
Mensaje en
pantalla
MSG '2 AREA DEL TRIANGULO'; Mensaje en
pantalla MSG '3 VOLUMEN DEL CUBO'; Mensaje
en pantalla LDT 'SU OPCION ES:'; Colocar valor
en el registro AX CMP 30; Compara AX con
memoria
JEQ 00D; Salta si son iguales
CMP 31; Compara AX con memoria
JEQ 014; Salta si son iguales
CMP 32; Compara AX con memoria
JEQ 020; Salta si son iguales
JMP 0; Salto incondicional a dirección de memoria
donde
13. está la siguiente instrucción a ejecutar.
MSG 'PARA HALLAR EL AREA DEL
CUADRADO O RECTANGULO:'; Mensaje en pantalla
LDT 'DIGITE EL LADO A:'; Colocar valor en el
reg. AX
MOV 4A,AX; Mueve el valor
a AX
LDT 'DIGITE EL LADO B:'; Colocar valor en el
reg. AX
MUL 4A ; Multiplica por el valor de
memoria
EAP 'EL AREA DEL CUADRADO O
RECTANGULO ES:'; Escribe en pantalla el contenido
de AX
JMP 0; Salto incondicional a dirección de memoria
donde está la siguiente instrucción a ejecutar.
MSG 'PARA HALLAR EL AREA DEL
TRIANGULO:';
Mensaje en pantalla
LDT 'DIGITE LA BASE:'; Colocar valor en el
reg. AX
MOV 4A,AX; Mueve el valor
a AX
CLA;
AX = 0
INC AX; Incrementa en 1 el
destino INC AX; Incrementa
en 1 el destino MOV 4B,AX;
Mueve el valor a AX
LDT 'DIGITE LA ALTURA:'; Colocar valor en el
reg. AX
MUL 4A ; Multiplica por el valor de
memoria
DIV 4B; Divide por el
valor
EAP 'EL AREA DEL TRIANGULO ES:';
Escribe en pantalla el contenido de AX
JMP 0; Salto incondicional a dirección de memoria
donde
está la siguiente instrucción a ejecutar.
MSG 'PARA HALLAR EL VOLUMEN DEL
CUBO:';
Mensaje en pantalla
MSG 'TENGA EN CUENTA QUE LOS LADOS
DE UN CUBO SON IGUALES'; Mensaje en pantalla
LDT 'DIGITE EL VALOR DE UN LADO:'; Colocar
valor
en el reg. AX
MOV 4A,AX; Mueve el valor
a AX
MUL 4A; Multiplica por el valor de
memoria
MUL 4A; Multiplica por el valor de
memoria
EAP 'EL VOLUMEN DEL CUBO ES:';
Escribe en pantalla el contenido de AX
JMP 0; Salto incondicional a dirección de memoria
donde está la siguiente instrucción a ejecutar.
HLT; Terminar
programa
#
3
0
0
0
1
0
1
0
0
1
1
Simulación en SIMUPROC:
14. MICROPROCESADORES Y MICROCONTROLADORES 8
Procedemos a escribir el código en el editor 2,
luego lo pasamos al editor uno y lo enviamos a la
memoria para verificar si hay errores.
Fig. 13 Editor
SIMUPROC
Se convierte de editor 2 a editor 1, posteriormente se
realiza el envío a Memoria.
Fig. 14 Editor
SIMUPROC
El siguiente paso es Ejecutar el
programa.
Fig. 15 Simulación en
SIMUPROC
Ejecutaremos todas las opciones, para probar la
funcionalidad completa del programa.
Iniciamos con la opción 1, la cual nos permite calcular el
área del cuadrado o el rectángulo:
Fig. 16 Simulación en Pantalla
SIMUPROC
Posteriormente nos pregunta los lados, vamos a
suponer que es un rectángulo de 5x8. Si tenemos en
cuenta que el area del cuadrado o rectángulo es BASE X
ALTURA, para este caso tenemos Área = 5x8 = 40:
Fig. 17 Calculo Área de un
Cuadrado
Luego de ejecutar el programa nos muestra la
pantalla del
programa y digitamos en este caso el
número 2:
15. MICROPROCESADORES Y MICROCONTROLADORES 9
Fig. 18 Calculo Área de un
Triangulo
Ahora nos pide la base del triangulo, entonces
decimos por ejemplo que es 4:
Fig. 19 Calculo Área de un
Triangulo
Ahora nos pide la altura del triangulo, en este
colocaremos 6:
Fig. 20 Calculo Área de un
Triangulo
Como resultado nos da 12, teniendo en cuenta que el
área del triangulo es (BASE X ALTURA)/2 = (6*4)/2 =
12
Así nuevamente dado el resultado nos envía al menú
principal
para realizar otra
operación.
Probamos entonces la opción 3, la cual nos permite
calcular el volumen del cubo. Para este caso,
calcularemos el volumen de un cubo de longitud de lado
3. El volumen del cubo esta dado por L^3.
Ejecutamos el programa eligiendo la opción 3 e
ingresando los datos:
16. MICROPROCESADORES Y MICROCONTROLADORES 10
TUTORIAL SIMUPROC Recuperado el 09de Nov de 2015
del Portal Web Buenas Tareas, de
http://www.buenastareas.com/temas/tutorial-simuproc/0
Fig. 21 Calculo Volumen de un Cubo
Y verificamos que efectivamente el volumen corresponde
al valor esperado. L^3 = 3^3 = 27
4. CONCLUSIONES
• La herramienta Simuproc nos permitió interpretar el
funcionamiento de un Microprocesador secuencia tras
secuencia.
• La herramienta Simuproc ayudo a interpretar fácilmente
el funcionamiento de un programa línea a línea.
• Aprendimos que desarrollo de un programa consta de
una serie de pasos vitales para lograr una ejecución exitosa:
Generar Pseudocódigo
Editar el Código
Fuente
Realizar Compilación, depuración y simulación del
programa.
• Simuproc ofrece una interfaz amigable y fácil de
entender facilitando el aprendizaje
5. REFERENTES
SIMUPROC Recuperado el 09de Nov de 2015 del Buscador
google, de http://sites.google.com/site/simuproc/
ENSAMBLADOR Recuperado 09de Nov de 2015 de la
Enciclopedia Virtual Wikipedia, de
http://es.wikipedia.org/wiki/Ensamblador