Está en la página 1de 24

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA

UNAD

DESALLORAR EL SOFTWARE DE MICROPROCESADORES

Tutor:
IVAN GUSTAVO PENA

Grupo: 309696_55

CIUDAD DUITAMA
7 DE MARZO
2020

INTRODUCCIÓN

La programación se ha vuelto tan importante en nuestra cotidianidad que casi se


vuelve una necesidad aprender a programar, ya sea desde un dispositivo sencillo
para programar en casa, hasta el programa de control de un sistema importante
de generación, por ejemplo.
Este documento pretende mostrar a quien lea este documento, cómo algunas
personas abordan la programación desde lo más básico como es el lenguaje
assembler a través de simuproc.
Se muestra una manera de cómo entender el trabajo de procesamiento de un
microcontrolador, verificándose paso a paso cada orden del programa realizando
ejercicios pequeños y prácticos ejemplarizando esto con videos de YouTube.

RESUMEN
El trabajo desarrollado se presenta de manera teórico practica a través de la
revisión de bibliografía suministrada y ayudas audiovisuales tales como las
webconferencias que dieron una pauta para el inicio del trabajo.
Se ejecuta un ejercicio por integrante a través de simuproc para practicar lo
aprendido.
Las evidencias son los videos subidos por cada uno de las personas que
participan

OBJETIVOS
 Entender qué es un microcontrolador y sus funciones básicas.

 Adquirir conocimiento de forma estructucturada que permitan resolver


problemas futuros con microcontroladores.

 Trabajar el lenguaje ensamblador a través de simuproc.

MARCO METODOLÓGICO
A continuación, se anexa tablas e imágenes que corresponden al trabajo de cada
uno según su experiencia y sus productos obtenidos
NÈSTOR ANDRÉS PRECIADO SICUAMÌA C.C. 74186928

Idea básica de cálculo de área de un trapezoide

Links de YouTube del video de cálculo de un trapezoide


https://youtu.be/WQeKincNiSo

https://www.youtube.com/watch?v=WQeKincNiSo

programa de simuproc en modo texto


#SimuProc 1.4.2.0
MSG ESTUDANTE
MSG NESTOR ANDRES PRECIADO GRUPO _309696 _55
msg TRAPEOZOIDE
msg ingrese lado a
IN AX,1; lee de puerto 1, el teclado y permite que sean números flotantes
stf 100
msg ingrese lado b
IN AX,1
stf 102
msg ingrese lado c
IN AX,1
stf 104
msg ingrese lado d
IN AX,1
stf 106
;hallamos la hipotenusa.usamos lado a y lado b
; h=raìz(a^2+ b^2)
;elevamos a al cuadrado
ldf 100 ; cargo 100 en AX
mulf 100; multiplico AX por memoria 100
msg lado a alcuadrado
out 1,AX
stf 10a; guardo el caudrado de a en poscion 10a
;levamos b al cuadrado
ldf 102
mulf 102 ; la misma situacìon que en 100
msg lado b al cuasdrado
out 1,AX
stf 10c ;
;sumamos los cuadrados sabiendo que en AX ya hay un dato.
addf 10a
stf 108 ; guardamos en esta posicion la hipotenusa
mov 108,109
msg salida de lados cuadrados a y b
out 1,AX
;ahora sacamos la RAIZ de la SUMA DE LOS CUADRADOS. PARA HALLAR LA
HIPOTENUSA
;se tiene en AX LA SUMA DE LOS CUADRADOS.
stf 092 ; variable a
ldf 094 ; variable b
subf 092; le resta a
jeq 029; salto si es verdadero sino comienza while
ldf 092; cargo a
stf 094 ; cambio valores b-a
ldf 108 ; cargo x
divf 096 ; /2
stf 092 ; se almacena en la variable a
jmp 01e; finalizo el ciclo,salto a dir 4
msg la raiz cuadrada de su numero es
ldf 092
out 1,AX ; muestro el resultado en pantalla
stf 108; guardo el valor final de la hipotenusa
; el area del primer cuadrado es (b*h/2)
; entonces seria el lado a* lado b, dividido 2.
ldf 100; cargo lado a
mulf 102; multiplico ax por lo que tengo en 102
stf 10e ; guardo la multiplicacion en la variable
divf 096 ; divido entre 2
stf 10e ;guardo el area 1.
msg el area del traingulo es:
out 1,AX
;ahora para el siguente tringulo, del cual no conocemos ningun angulo
;utilizaremos la FORMULA DE MERON,la cual nos indica que
;primero hallamos el semiperimetro s=(a+b+c)/2
;donde a es el lado c,b el lado d y c es la hipotenusa
ldf 104 ; cargo c
addf 106 ; suma AX, con el lado d.
addf 108 ; suma AX con la hipotenusa.
divf 096; divido ax entre 2
stf 112 ; guardo en la memoria la variable s.
msg el semiperimetro es:
out 1,AX ; muestra el resultado en pantalla
; el area del tringulo 2 es igual
; raìz((s*(s-a)*(s-b)*(s-c))
;le restamos a s-a y lo guardamos en la variable.
subf 104 ; le restamos al s el lado c
stf 114 ; lo guardamos en la variable a
ldf 112 ; cargo s
subf 106 ; le restamos a al lado d
stf 116; lo guardo en la variable a
ldf 112 ; cargo s
subf 108 ; le resto s a la hipotenusa
stf 118 ; lo gurado en la variable c
ldf 112; cargo s
mulf 114;
mulf 116;
mulf 118;
stf 110; se guarda el resultado de las multiñlicaciones en la variable
; area 2
; se saca raiz al area 2
; en AX esta guardada la multiplicaciòn
stf 092; variable a
ldf 094 ; variable b
subf 092 ; le resto a
jeq 054 ; salto si es verdadero,sino comienxa while
ldf 092; cargo a
stf 094; cambio valores de b*a
ldf 110 ; cargo x
divf 092 ;x/a
addf 092 ; +a
divf 096; /2
stf 092; se almacena en la variable a
jmp 049 ; finalizo ciclo,salto a la dir 4
msg el area del triangulo _2 es
ldf 092
out 1,AX
stf 110; guardo el valor final del area 2
addf 10e
msg el area del trapezoide es:
out 1,AX
hlt
094
0000000000000000 ; el valor 0 en 32 bits asignado a b
0000000000000000
0100000000000000 ; valor 2 en 32 bits
0000000000000000

RAFAEL RICARDO PEREZ VILLANUEVA C.C. 74 080 286


Generar el promedio de edad de los integrantes del grupo colaborativo:
Se suman las cantidades de cada uno de los alumnos y el resultado se divide en
la cantidad de estudiantes:
Links de YouTube del video de cálculo de
https://youtu.be/xOua4EVrWAU
programa de simuproc en modo texto
#SimuProc 1.4.2.0
LDT "ingrese la cantidad de estudiantes"
STA 015
LDT "ingrese la edad del primer estudiante"
STA 016
LDT "ingrese el segundo valor"
ADD 016
STB 017
LDT "ingrese el tercer valor"
ADD 017
STB 018
LDT "ingrese el cuarto valor"
ADD 018
STB 019
LDT "ingrese la edad del ultimo estudiante"
ADD 019
STB 01A
DIV 015
MSG "el promedio de edad es"
EAP
HLT
#015
101
100111
1001111
1110100
10010111
10110101
Conclusiones y aspectos más relevantes según las lecturas de la
unidad 1
- Las compuertas se dividen en muestreadas (da reproducción exacta de la
señal de entrada a la salida en un intervalo de tiempo) y lógicas (para las
funciones lógicas simples binarias), y éstas a su vez se dividen en pasivas
-no amplifican la señal, como en un diodo- activas –se utilizan en circuitos
que amplifican como en transistores-
- El microprocesador es uno de los logros humanos más significativos del
siglo XX, desde sus inicios en los años 60 y 70, hasta la actualidad, donde
podemos verlos en muchas de las maquinas que utilizamos a diario. Afirmar
cual es el mejor microprocesador actual es complicado, es según la
necesidad del usuario la que define cual debe ser el más adecuado.
- El lenguaje ensamblador convierte los nombres simbólicos de las
instrucciones (Nemónicos) en código de máquina y genera una instrucción
de maquina por cada nemónico. Un programa consta de cuatro segmentos,
y cada segmento se direcciona mediante un tipo de registro.
En ensamblador existen cinco tipos de constantes: binaria, decimal, octal,
hexadecimal y carácter y a las variables se les designa un lugar de
memoria a ocupar.
Las instrucciones aritméticas operan en binario con o sin signo de 8 y 16
bits y en números decimales sin signo empaquetados o no. También posee
ayudas para un mejor manejo que son los periféricos, ingreso de variables
por teclado y muestra de resultados por monitor.

CONCLUSIONES

Se realizó practica con el lenguaje de maquina assembler a través de simuproc.


Se aprende manejar el programa de simuproc de manera apropiada ejecutándose
con éxito los programas planteados.
Se adquieren conocimientos de conceptos básicos y específicos de
microprocesadores con las lecturas de la unidad 1 propuestas en el entorno de
conocimiento

RAFAEL ANTONIO PEREZ PIRAGAUTA C.C. 1057595607

Links de YouTube del video de cálculo de


https://www.youtube.com/watch?v=VdlGbhesmDg&feature=youtu.be

programa de simuproc en modo texto

Tabla de contenido
Explicación de las instrucciones dadas en el programa
Explicación de simunpro con ejercicio en ejecución

CLA= instrucción usada para borrar la memoria de AX


MSG= instrucción que sirve para escribir un mensaje en la pantalla
LTD= instrucción usada para leer por medio del teclado
CMP= se utiliza para comparar lo que está en AX con el valor de la
dirección escrita
JMA= dirección definida si lo que comparamos es mayor alo que está en
la dirección
JEQ= va a la dirección definida si lo que comparamos es igual a lo que
está en la dirección
JME= va a la dirección definida si lo que estamos comparando es menor
alo que está en la dirección
IN (AX, 1)= instrucción que lee valores flotantes
STF= instrucción usada para los valores en la dirección de una memoria
especificada
LDA= instrucción que nos sirve para cargar a AX lo que está en la
dirección de memoria especifica
EAP= con esta función se muestra en la pantalla lo que está en AX
ADD= instrucción usada para sumar AX
MUL=instrucción usada para multiplicar AX por lo que está en la
dirección
HLT= fin del programa

c 1.4.2.0
CLA
CLC
MSG "CALIFICACIONES DE ESTUDIANTES"
MSG "MENU PRINCIPAL"
MSG "1. INGRSA LAS NOTAS"
MSG "2.SALIR"
LDT SELECCIONE LA OPCION
CMP 00D ;CON 1
JME 010 ;MENOR
JEQ 015 ;IGUAL
CMP 00E ;CON 2
JMA 010 ;MAYOR
JEQ 012 ;IGUAL

#00D
01 ;1
10 ;2

#010
MSG OPCION NO VALIDA
JMP 006
MSG SALIENDO
CLA
HLT

#015
CLA
MSG NOTA PRIMER ESTUDIANTE
IN AX,1 ;LEER VALOR EN FLOTANTE
STF 02A ;GUARDAR AX EN 02A
LDA 02A ;CARGAR A AX
CMP 150 ;COMPARAR CON 5
JMA 025 ;SI > 5
CMP 15C ;COMPARA CON 0
JME 025 ;SI < 0
CMP 154 ;SI MAYOR O IGUAL QUE 3
JMA 027 ;> 3
JEQ 027 ;= 3
CMP 158 ; COMPARAR CON 1
JME 030 ;<1
CMP 154 ; COMPARAR CON 3
JME 02C ;< 3

#25
MSG NOTA NO VALIDA4JMP
JMP 015
INC 028 ;(027) CONTADORES MAYORES E IGUALES A 3

JMP 034
#02C
INC 02D ;(02C) CONTADOR MENORES A 3
0
JMP 034
#030
INC 031 ;(030) CONTADOR MENORES A 1
0
JMP 034}
#034
MSG NOTA SEGUNDO ESTUDIANTE
IN AX,1 ;LEER VALOR EN FOTANTE
STF 02A ;GUARDAR EN AX
LDA 02A ;CARGAR A AX
CMP 150 ; COMPARAR CON 5
JMA 043 ;SI < 0
CMP 154 ;SI MAYOR O IGUAL QUE 3
JMA 045 ;> 3
JEQ 045 ;= 3
CMP 158 ;COMPARAR CON 1
JME 04B ;< 1
CMP 154 ; COMPARAR CON E
JME 048 ;< 3

#43
MSG NOTA NO VALIDA
JMP 034
INC 046 ;(045)
0
JMP 04F
INC 049 ;(048)
0
JMP 04F
INC 04C ;(04B)
0
JMP 04F

#04F
MSG NOTA TERCER ESTUDIANTE
IN AX,1
STF 02A
LDA 02A
CMP 150 ;COMPARAR CON 5
JMA 05F
CMP 15C ;COMPARAR CON 0
JME 05F
CMP 154 ;SI MAYOR O IGUAL QUE 3
JMA 061
JEQ 061
CMP 158 ;COMPARAR CON 1
JME 067
CMP 154 ;COMPARAR CON 3
JME 064

#05F
MSG NOTA NO VALIDA
JMP 04F
INC 062 ;061)
0
JMP 06C
INC 065 ;(064)
0
JMP 06C
INC 068 ;(067)
0
JMP 06C
#06C
NOTA CUARTO ESTUDIANTE
IN AX,1
STF 02A
LDA 02A
CMP 150 ; COMPARAR CON 5
JMA 07C
CMP 15C ; COMPARAR CON 0
JME 07C
CMP 154 ; SI MAYOR O IGUAL QUE 3
JMA 07E
JEQ 07E
CMP 158 ;COMPARAR CON 1
JME 084
CMP 154 ; COMPARAR CON 3
JME 081

#07C
MSG NOTA NO VALIDA
JMP 06C
INC 07F ;(07E)
0
JMP 089
INC 082 ;(081
0
JMP 089
INC 085 ;(084)
0
JMP 089
#089
MSG NOTA QUINTO ESTUDIANTE
IN AX,1
STF 02A
LDA 02A
CMP 150 ;COMPARAR CON 5
JMA 099
CMP 15C ;COMPARAR 0
JME 099
CMP 154 ; SI MAYOR O IGUAL QUE 3
JMA 09B
JEQ 09B
CMP 158 ;COMPARAR CON 1
JME 0A1
CMP 154 ;COMPARAR CON 3
JME 09E

#099
MSG NOTA NO VALIDA
JMP 089
INC 09C ;(098)
0
JMP 0A6
INC 09F ;(09E)
0
JMP 0A6
INC 0A2 ;(0A1)
0
JMP 0A6

#0A6
MSG NOTA SEXTO ESTUDIANTE
IN AX,1
STF 02A
LDA 02A
CMP 150 ;COMPARAR CON 5
JMA 0B6
CMP 15C ;COMPARAR CON 0
JME 0B6
CMP 154 ;SI MAYOR IGUAL QUE 3
JMA 0B8
JEQ 0B8
CMP 158; COMPARA CON 1
JME 0BE
CMP 154 ;COMPARAR CON 3
JME 0BB

#0B6
MSG NOTA NO VALIDA
JMP 0A6
INC 0B9 ;(0B8)
0
JMP 0C3
INC 0BC ;(0BB)
0
JMP 0C3
INC 0BF ;(0BE)
0
JMP 0C3

#0C3
MSG NOTA SEPTIMO ESTUDIANTE
IN AX,1
STF 02A
LDA 02A
CMP 150 ;COMPARAR CON 5
JMA 0D3
CMP 15C ;COMPARAR CON 0
JME 0D3
CMP 154 ;SI MAYOR O IGUAL QUE 3
JMA 0D5
JEQ 0D5
CMP 158 ;COMPARAR CON 1
JME 0DB
CMP 154 ; COMPARAR CON 3
JME 0D8

#0D3
MSG NOTA NO VALIDA
JMP 0C3
INC 0D6 ;(0D5)
0
JMP 0E0
INC 0D9 ;(0D8)
0
JMP 0E0
INC 0DC;(0D5)
0
JMP 0E0

#0E0
MSG NOTA OCTAVO ESTUDIANTE
IN AX,1
STF 02A
LDA 02A
CMP 150;COMPARAR CON 5
JMA 0F0
CMP 15C ;COMPARAR CON 0
JME 0F0
CMP 154; SI MAYOR O IGUAL QUE 3
JMA 0F2
JEQ 0F2
CMP 158 ;COMPARAR CON 1
JME 0F8
CMP 154 ;COMPARAR CON 3
JME 0F5
#0F0
MSG NOTA NO VALIDA REPETIR
JMP 0E0
INC 0F3 ;(0F2)
0
JMP 0FD
INC 0F6 ;(0F5)
0
JMP 0FD
INC 0F9 ;(0F8)
0
JMP 0FD

#0FD
MSG NOVENO ESTUDIANTE
IN AX,1
STF 02A
LDA 02A
CMP 150 ; COMPARAR CON 5
JMA 10D
CMP 15C ;COMPARAR CON 0
JME 10D
CMP 154 ;SI MAYOR O IGUAL QUE 3
JMA 10F
JEQ 10F
CMP 158 ;COMPARAR CON 1
JME 115
CMP 154 ;COMPARAR CON 3
JME 112

#10D
MSJ NOTA NO VALIDA
JMP 0FD
INC 110 ;(10F)
0
JMP 11A
INC 113;(112)
0
JMP 11A
INC 116;(115)
0
JMP 11A

#11A
MSG NOTA DECIMO ESTUDIANTE
IN AX,1
STF 02A
LDA 02A
CMP 150 ;COMPARAR CON 5
JMA 12A
CMP 15C;COMPARAR CON CERO
JME 12A
CMP 154 ; SI ES MAYOR O IGUAL QUE 3
JMA 12C
JEQ 12C
CMP 158 ;COMPARAR CON 1
JME 134
CMP 154 ;COMPARAR CON 3
JME 131

#12A
MSG NOTA NO VALIDA
JMP 11A
INC 12D ;(12C)
0
JMP 1160
#131
INC 132 ;(121)
0
JMP 160
INC 135 ;(134)
0
JMP 160

#140
1010 ;10
1010 ;10

#150
0100000010100000 ;5.0 BINARIO (150)
0000000000000000
0000000000000000
NOP
0100000001000000 ;3.0 BINARIO (154)
0000000000000000
0000000000000000
NOP
0011111110000000 ;1.0 BINARIO (158)
0000000000000000
0000000000000000
NOP
0000000000000000 ;0.0BINARIO (15C)
0000000000000000
0000000000000000

#160
LDA 028; SUMA PARA CALCULAR LA PROBABILIDAD DE APROBACION
ADD 046
STA 136
ADD 062
STA 136
ADD 07F
STA 136
ADD 09C
STA 130
ADD 0B9
STA 136
ADD 0D6
STA 136
ADD 0F3
STA 136
ADD 110
STA 136
ADD 12D
STA 136
MSG PROBABILIDAD DE APROBAR
MUL 140
EAP
MSG "%"

CLA
LDA 02D ; SUMA PARA PARA CALCULAR LA PROBABILIDADA DE
REPROBACION
ADD 049
STA 137
ADD 065
STA 137
ADD 082
STA 137
ADD 09F
STA 137
ADD 0BC
STA 137
ADD 0D9
STA 137
ADD 0F6
STA 137
ADD 113
STA 137
ADD 132
STA 137

LDA 031 ; SUMA DE MENOS A 1.0


ADD 04C
STA 138
ADD 068
STA 138
ADD 085
STA 138
ADD 0A2
STA 138
ADD 0BF
STA 138
ADD 0DC
STA 138
ADD 0F9
STA 138
ADD 116
STA 138
ADD 135
STA 138

CLA
LDA 137
ADD 138
MSG PROBABILIDAD DE REPROBAR
MUL 141
EAP
MSG "%"

CLA
LDA 138
MSG ESTUDIANTES CON NOTA MENOR A 1
EAP
CLA
LDA 136
MSG ESTUDIANTES QUE APROBARON
EAP

CLA
LDA 137
ADD 138
MSG ESTUDIANTES QUE REPROBARON
EAP

HLT

Conclusiones

Estos tipos de programas son más comunes de lo que parecen los


encontramos desde pequeñas tiendas hasta en las grandes industrias

Estos programas utilizan diferentes tipos de memoria y variables ya que


se extienden y pueden ser complejos

La ejecución del programa debe ser perfecta para obtener el resultado


esperado

BIBLIOGRAFÍA
Guisa, J. (2009). Electrónica Digital. Instituto Politécnico Nacional. (Pp. 26 -32).
Recuperado de: http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?
ppg=6&docID=3192086&tm=1531433929303

Hernández, E. (2009). Microprocesadores. Ed. El Cid Editor. (Pp. 5 -23)


Recuperado de: http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?
ppg=3&docID=3183363&tm=1527288594447

Rocabado, S. (2009). Arquitectura y organización de la computadora:


microprocesadores y programación Assembler. Editorial de la Universidad
Nacional de La Plata. (Pp. 24-66). Recuperado de:
http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?
ppg=1&docID=4499097&tm=1527288958603

Williams, Arthur. (2009). Microprocesadores, dispositivos periféricos,


optoelectrónicos y de interfaz. Ed. McGraw-Hill. (Pp. 5-42). Recuperado de:
http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?
ppg=31&docID=3191906&tm=1527289146227

También podría gustarte