Sei sulla pagina 1di 19

Unidad 1

Paso 2: Desarrollar el software de Microprocesadores

Presentado a:
NESTOR JAVIER RODRIGUEZ
Tutor

Entregado por:

WESTHLY JOSE SARABIA CARRILLO (1065837909)


JASON PALÁCIO RUIZ
IOHAM MORILLO (77029746)
GABRIEL ENRIQUE MANGONES (1104866293)
HUMBERTO ANTONIO ROJAS (1065658268)

Grupo: 309696_23

Universidad Nacional Abierta Y A Distancia - UNAD


Escuela De Ciencias Básicas, Ingenierías Y Tecnologías
Microprocesadores y Microcontroladores
08 de marzo de 2019
Valledupar-Cesar
INTRODUCCIÓN

Estudiaremos y aplicaremos a través de ejercicios cotidianos, el desarrollo


de software en los microprocesadores. Se revisara y analizará la unidad
1 – introducción a los microprocesadores, para dar inicio a los
microprocesadores y su programación a través del lenguaje assembler.
RESUMEN

Desarrollaremos ejercicios solicitados por la guía de actividades, en donde


consta de 5 problemas, y le daremos su solución implementando el
lenguaje assembler, en el programa Simuproc. Al finalizar esto,
explicaremos cada solución dada a los 5 problemas planteados, a través
de vídeos subidos a la red, estos link se encontraran adjunto al pie de
cada solución.
OBJETIVOS

- Leer y analizar el contenido de la unidad 1


- Comprender el lenguaje Assembler
- Desarrollar los puntos planteados en la guía de actividades
- Exponer cada solución planteada, a través de videos explicativos
desarrollados por cada estudiante.
IDENTIFICACIÓN DE REQUISITOS Y VARIABLES QUE
INTERVIENEN

Simuproc:

Simuproc es un software que simula el funcionamiento de un procesador,


lo cual nos permite empezar a aprender la programación en lenguaje
ensamblador; con Simuproc podemos observar adicionalmente de forma
gráfica el proceso interno de ejecución de los programas por cada ciclo
del procesador.

Entorno de Simuproc

Entorno de edición
INSTRUCCIONES SOPORTADAS POR SIMUPROC

Simuproc tiene una cantidad suficiente de instrucciones que bien


implementadas pueden conformar un sin número de distintos programas
para diseñar y ejecutar en este software. A continuación se presentan
algunos de ellos:

LDA [mem]: Carga en AX el contenido de la dirección de Memoria


indicada.
STA [mem]: Guarda el valor de AX en la dirección de Memoria indicada.
XAB: Intercambia los valores de los registros AX y BX
CLA: Borra el valor de AX y lo deja en 0
PUSH [registro]: Envía el valor del registro especificado a la pila.
POP [registro]: Trae de la Pila el último Valor llevado por PUSH y lo
almacena en el registro indicado.
INC [dest]: Incrementa en 1 el destino indicado.
DEC [dest]: Decremento en 1 el destino indicado.
MOV [dest,orig]: Copia el valor almacenado en el origen al destino
indicado.
AND [dest,orig]: Hace un Y lógico entre todos los bits de los dos
operándos escribiendo el resultado en el destino.
NOT [destino]: Invierte los bits del operando formando el complemento
del primero.
OR [dest,orig]: O lógico, todo bit activo en cualquiera de los operándos
será activado en el destino.
XOR [dest,orig]: O exclusivo, realiza un O exclusivo entre los
operándoos y almacena el resultado en destino.
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.
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 numero de veces
especificado en decimal, agregando ceros a la derecha.
SHR [dest,veces]: Desplaza los bits a la Derecha el número de veces
especificado en decimal, agregando ceros a la izquierda.
ADD [mem]: Suma a AX el contenido de la dirección de memoria.
SUB [mem]: Restar: a AX - el contenido de la dirección de memoria.
MUL [mem]: Multiplicar a AX por el contenido de la dirección de
memoria.
DIV [mem]: Divide a AX por el contenido de la dirección de memoria.
CLN: Limpia el Negative Flag. Y lo pone en 0.
CLC: Limpia el Carry Flag y lo pone en 0.
STC: Pone el Carry Flag.en 1.
CMC: Complementa o invierte el Carry Flag
LOOP [mem]: Decrementa CX y salta a la Pos de memoria si CX no es
cero.
JMP [mem]: Salto incondicional a la dirección indicada.
JEQ [mem]: Saltar si la operación anterior dio un cero.
CMP [mem]: Compara AX con [mem], si AX es mayor, Z=0 N=0, si es
igual Z=1 N=0, si es menor Z=0 N=1
JME [mem]: Saltar si el resultado de la última operación dio un negativo.
JMA [mem]: Saltar si el resultado de la última operación es un número
positivo.
JC [mem]: Saltar si el Carry Flag esta activado.
JNC [mem]: Saltar si el Carry Flag no esta activado.
JO [mem]: Saltar si el Overflow Flag esta Activado.
JNO [mem]: Saltar si el Overflow Flag no esta activado.
JNE [mem]: Saltar si la operación anterior es distinta a cero.
LDT: Lee un valor del Teclado y lo lleva al registro AX.
EAP: Escribe en Pantalla el contenido del registro AX.
MSG: Muestra un mensaje en pantalla.
LDB [mem]: La instrucción carga en AX el contenido de memoria
almacenado en [mem] + BX
STB [mem]: Guarda el contenido de AX en la dirección [mem] + BX
LDF [mem]: Carga en BX y AX un numero de 32 bits (IEEE) que esta
almacenado en la dir [mem] y mem+102A 0100001011001000 (Los
dígitos mas significativos)
STF [mem]: Guarda en [mem] y mem+1 el contenido de BX y AX.
ADDF [mem]: Suma números de 32 bits, en BX y AX queda el resultado
de la suma de estos.
SUBF [mem]: Resta el número de 32 bits.
MULF [mem]: Multiplicación para números de 32 bits.
DIVF [mem]: Division para números de 32 bits
ITOF: Conversión de Entero a Real:
FTOI: Conversión de Real a Entero:
IN: Lleva al Registro el valor retornado por el puerto especificado.
OUT: Escribe en el puerto especificado, el valor del registro.
NOP: Esta operación no hace nada, es util para cuando se modifica la
memoria para parchar código y desactivar instrucciones.
HLT: Todo Programa lleva esta instrucción para indicarle al simulador que
el programa ha terminado su ejecución.
Solución A Los Ejercicios En Simuproc:
Cada uno de los estudiantes junto con el grupo de trabajo colaborativo
desarrolla los siguientes programas, cada uno de ellos debe tener
presentación y un menú contextual donde se solicite al usuario la
selección del punto de interés, teniendo en cuenta que cada estudiante
selecciona uno de estos y realiza su desarrollo:

1. Realizar el promedio de la suma de las edades de los integrantes del


grupo
2. Desarrollar un programa para hallar el área de un trapezoide
3. Desarrollar un programa para hallar el área de una circunferencia
4. Realizar un programa que ordene 3 números de menor a mayor
5. Realizar un programa que identifique las calificaciones de 10
estudiantes y muestre la probabilidad de aprobación y reprobación,
como también los que no ingresaron con notas inferiores a 1.0, junto
con la cantidad de estudiantes que aprobaron y perdieron, tengan en
cuenta que la nota aprobatoria es de 3.0
Programa 1, Promedio De La Suma De Las Edades De Los
Integrantes Del Grupo

Westhly José Sarabia

MSG PASO 2
MSG PUNTO UNO
MSG Programa para calcular el promedio de edades de los
integrantes
CLA ; Inicializa a AX en cero
LDT INGRESE LA CANTIDAD DE ESTUDIANTES; pide al usuario
ingresar la cantidad de estudiantes
MSG *******
MOV CX,AX; Almacena en CX el valor de AX, correspondiente a la
cantidad de estudiantes
MOV 05A,CX ;Almacena en la posición 05A el valor de CX
LDT Ingrese edad del estudiante; pide al usuario ingresar la edad
del estudiante
STA 04A; guarda el resultado anterior en la posición 04A
LDT Ingrese edad del estudiante; pide al usuario ingresar la edad
del estudiante
ADD 04A ; Suma el valor anterior con el que se encuentra en la
posición 04A
STA 04B ; guarda la suma realizada anteriormente en la posición
04B
LDT Ingrese edad del estudiante; pide al usuario ingresar la edad
del estudiante
ADD 04B; Suma el valor anterior con el que se encuentra en la
posición 04B
STA 04C ; guarda la suma realizada anteriormente en la posición
04C
LDT Ingrese edad del estudiante ; pide al usuario ingresar la edad
del estudiante
ADD 04C; Suma el valor anterior con el que se encuentra en la
posición 04C
STA 04D ; guarda la suma realizada anteriormente en la posición
04D
LDT Ingrese edad del estudiante; pide al usuario ingresar la edad
del estudiante
ADD 04D ; Suma el valor anterior con el que se encuentra en la
posición 04D
DIV 05A ; Divide la suma anterior con la posición 05A
EAP EL PROMEDIO DE EDADES ES; arroja el resultado
HLT ; Finaliza el Programa

Link Al Video Explicativo: https://youtu.be/n0wg6MHkZvE

Programa 2, Calculo del área de un trapezoide

Jasón Palacio Ruiz

CLA
CLA
MSG "Calcular el area de un trapezoide"
MSG "Ingrese base A:"
LDT
STA 01a
MSG "Ingrese base B:"
LDT
STA 01b
ADD 01a
STA 01c
MSG "Ingrese la Altura del trapezoide:"
LDT
STA 01d
MUL 01c
STA 01e
DIV 019
STA 01f
MSG "El Area del trapezoide es:"
EAP
hlt
#019
10

Link Al Video Explicativo: https://youtu.be/e_A-I-F59Ko

Programa 3, Calculo del área de una circunferencia

Ioham Morillo

MSG El Área del CIRCULO se puede calcular si se conoce su radio r


MSG --------------------------------------------------------------
MSG La fórmula es A= (pi)*r = (3,1416)*r
MSG --------------------------------------------------------------
CLA ; Inicializo AX en cero
MSG Ingresa el valor del radio:
IN AX,1 ;Leo el valor ingresado para el radio r. Uso IN para ingresar
número fraccionario
STF 2A ; Almaceno el valor del radio en el registro 2A y 2B
LDF 020; cargo el valor de pi (32 bit) almacenado en la dir 020 (16
bit) y 021 (16 bit)
STF 2E ; grabo el valor de pi en 2E
MULF 2A; Multiplico el valor del radio por pi
MSG
=========================================
======================
MSG El valor del área del círculo es:
OUT 1, AX; Instrucción de salida para números fraccionarios
MSG Unidades cuadradas
MSG
=========================================
======================
MSG Desea calcular el área de otro circulo?
MSG Presione 1 para SI, o 2 para NO
MSG ---------------------------------------------------------------
IN AX, 1
CMP 022; Compara la opción ingresada con el numero 2 guardado
en 023
JME 005; Si la opción ingresada es menor que 2 entonces eligió 1
para seguir
JEQ 01A; Si ingreso la opción 2 salta a la instrucción de salir
MSG ---------------------------------------------------------------
MSG Opción no valida, Elija 1 o 2
JMP 011
HLT
#020
0100000001001001
0000111111111001
0100000000000000
0000000000000000

Link Al Video Explicativo: https://youtu.be/if2jT-yHk38


Programa 4 para ordenar 3 números de menor a mayor

Humberto Antonio Rojas

1ba
1101
42000
'ORDENAR 3 NUMEROS DE MENOR A MAYOR'
42000
'INTRODUCIR LOS DATOS A NUMERAR'
40000
'VALOR DE A:'
1020,AX
40000
'VALOR DE B:'
1021,AX
40000
'VALOR DE C:'
1022,AX
10AX,20
3221
3480
3140
3050
99000
10AX,20
41000
'A'
10AX,21
41000
'B'
10AX,22
41000
'C'
300D
0
100
101
100
10AX,21
3222
3490
3115
3060
10AX,21
3220
3340
3060
10AX,22
3221
3390
3015
10AX,20
1025,AX
10AX,21
1020,AX
10AX,25
1021,AX
3040
10AX,21
1025,AX
10AX,22
1021,AX
10AX,25
1022,AX
3008
309

Link Al Video Explicativo: https://youtu.be/cJw6omz4SPk


Programa 5 que analiza las calificaciones de 10 estudiantes

Gabriel Enrique Mangones

msg 'PROGRAMA PARA ANALIZAR CALIFICACIONES'


msg ' DE DIEZ ESTUDIANTES'
msg ' '
msg 'Ingrese La Nota y pulse ENTER'
INC 62
IN ax,1
stf 2A
LDF 2A ; Verifico si la nota es >=1, en caso de, saltar hasta 70
SUBF 50
JMA 70
JEQ 70
LDA 63
SUB 62
JEQ 90
JMP 003
#50
0011111110000000; constante igual a 1
0000000000000000
0100000001000000; constante igual a 3
0000000000000000
#60
0000000000000000; Contador de notas >= 1
0000000000000000; Contador de notas >= 3
0000000000000000; Contador de estudiantes
0000000000001010; Constante igual a 10
0000000000000000; Constante igual a 0
#70
INC 60; Incrementar contador de notas >= 1
LDF 2A ; Verifico si la nota es >=3, en caso de, saltar hasta 80
SUBF 52
JMA 80
JEQ 80
LDA 63
SUB 62
JEQ 90
JMP 003
#80
INC 61; Incrementar contador de notas >= 3
LDA 63
SUB 62
JEQ 90
JMP 003
#90
LDA 61
MUL 63
EAP "Probabilidad de Aprobación(%):"
LDA 63
SUB 61
MUL 63
EAP "Probabilidad de Reprobación (%):"
LDA 60
EAP " Cantidad de Notas no inferiores a 1.0 :"
LDA 61
EAP "Estudiantes que Aprobaron:"
LDA 63
SUB 61
EAP "Estudiantes que Reprobaron:"
lDA 64
STA 60
STA 61
STA 62
hlt

Link Al Video Explicativo: https://youtu.be/5G1ewjMldk8


CONCLUSIÓN

Logramos desarrollar a cabalidad todos los problemas propuestos, y


pudimos comprender el lenguaje Assembler. El programa Simuproc es
un buen software para la solución y la práctica de este lenguaje, es
práctico y fácil de entender, como ejemplo tenemos la solución y
explicación de los problemas planteados. Se adjuntara un programa en
donde contiene cada problema solucionado, con su respectivo menú, en
donde podrá elegir qué ejercicio desea abrir.
BIBLIOGRAFIA
- Guisa, J. (2009). Electrónica Digital. Instituto Politécnico Nacional.
(Pp. 26 -32). Recuperado
de:http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.ac
tion?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.ac
tion?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.ac
tion?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.ac
tion?ppg=31&docID=3191906&tm=1527289146227

Potrebbero piacerti anche