Está en la página 1de 30

Tarea 6

Desarrollar un prototipo funcional

Brillyn Narváez Vargas


1117528309

Grupo: 202016893_238

Nombre Docente: Jhon Manuel Soto

Universidad Nacional abierta y a distancia-UNAD


Escuela de ciencias básicas, Tecnología e ingeniería
Arquitectura de Computadores
Ingeniería de sistemas
Diciembre del 2021.
Florencia Caquetá.

2021
INTRODUCCIÓN
El presente trabajo incluye la implementación de un prototipo funcional
desarrollado en lenguaje ensamblador, el prototipo incluye una lista de opciones
que le permiten realizar operaciones aritméticas como suma, resta, multiplicación
y división, confirmar si un número es positivo o negativo y la posibilidad de salir.
Además, se adjunta una captura de pantalla de la implementación del programa,
que refleja el correcto funcionamiento del programa desarrollado donde
implementaremos los conocimientos adquiridos durante el desarrollo de
actividades previas y en investigación. Unidades 1, 2 y 3 del curso Arquitectura de
Computadores.

.
OBJETIVOS

 Desarrollar prototipos funcionales en lenguaje ensamblador para conocer el


funcionamiento de los registros de propósito general.
 Aplicar y apropiarse de los conceptos fundamentados en las lecturas de las
unidades del curso arquitectura de computadores.
 Crear un prototipo funcional en lenguaje Ensamblador donde pongamos en
práctica los conocimientos adquiridos.
Desarrollo de la actividad

1. El estudiante realiza un prototipo funcional en lenguaje


ensamblador, que incluya el siguiente menú de opciones:

MENÚ
1. Datos del autor
2. Suma de dos números
3. Resta de dos números
4. Multiplicación de dos números
5. División de dos números
6. Validar si un número es positivo o negativo
7. Salir

Opción 1: debe imprimir en pantalla

• Nombre del Estudiante


• Centro UNAD donde estudia
• Fecha de presentación

Opciones 2,3,4 y 5: debe solicitar por teclado dos números de un


digito cada uno.

Opción 6: debe solicitar por teclado un numero de un digito.

Opción 7: Salir del prototipo

2. El estudiante aporta dos conclusiones de la actividad

C ó d i g o
;Nombre del autor: Brillyn Narvaez Vargas
;Centro UNAD donde estudia: CEAD Florencia Caqueta-Zona Sur
;PROGRAMA: ingenieria de sistemas
;Cedula: 1117528309
;Grupo: 202016893_238
;Fecha de presentacion: 03/12/2021
;Universidad Nacional Abierta y a Distancia
.model small
.stack 64 ; define tamano de pila 64k
.data segment ; define las variables donde se almacena la
informacion
; declaracion de los mensajes que se va mostrar en pantalla el
Menu de opciones y resultados
mens1 DB 13,10,13,10, "Tarea 6-Desarrollar un prototipo funcional
en lenguaje ensamblador para conocer el funcionamiento de los
registros de proposito general. $"
mens2 DB 13,10,13,10, " TE MOSTRARE LAS OPCIONES QUE TIENE PARA
TI!! $"
mens3 DB 13,10,13,10," MENU PRINCIPAL: $"
mens4 DB 13,10,13,10, "1. Datos del autor $"
mens5 DB 13,10,13,10, " NOMBRE: Brillyn Narvaez Vargas",13,10, "
CEDULA: 1117528309",13,10, " PROGRAMA: ingenieria de
sistemas" ,13,10, "Centro UNAD donde estudia: CEAD Florencia
Caqueta-Zona Sur" ,13,10, "Fecha de presentacion: 03 de Diciembre
del 2021",13,10,"Universidad Nacional Abierta y a Distancia,$"
mens6 DB 13,10, "2. Suma de dos numeros $"
mens7 DB 13,10, "3. Resta de dos numeros $"
mens8 DB 13,10, "4. Multiplicacion de dos numeros $"
mens9 DB 13,10, "5. Division de dos numeros $"
mens10 DB 13,10, "6. Validar si un numero es positivo o negativo
$"

mens11 DB 13,10, "7. Salir $"


mens12 DB 13,10,13,10, " SELECCIONE UNA OPCION: $"
mens13 DB 13,10,13,10, "INGRESE NUMERO: $",
mens14 DB 13,10, "El resultado es: $"
mens15 DB "COCIENTE= $"
mens16 DB " RESIDUO= $"
mensmayor DB 13,10,13,10, "El numero digitado es positivo $"
mensmenor DB 13,10,13,10, "El numero digitado es negativo $"
result DB 0
quotient DB 0
residue DB 0
numero DB 0
signox DB 0
r2 DB ?
ac DB 0
num1 DB 0
pila segment stack
pila ends
code segment
menú proc far ; inicia el procedimiento
assume cs: code, ds: data, ss: pila
push ds
xor ax, ax
push ax
mov ax, data
mov ds, ax
xor dx, dx

mov ax, 0600h


mov ah ,09h
mov dx, offset mens1 ; mostramos el titulo del programa
int 21h
mov ah, 09h
mov dx, offset mens2 ; mostramos el segundo mensaje
int 21h
mov ah,09h
mov dx, offset mens3 ; mostramos la palabra menu
int 21h
mov ah,09h
mov dx, offset mens4
int 21h
mov ah,09h
mov dx, offset mens6 ; mostramos del 4 6 hasta el 11 las opciones
a seleccionar en el menu
int 21h
mov ah,09h
mov dx, offset mens7
int 21h
mov ah,09h
mov dx, offset mens8
int 21h
mov ah,09h
mov dx, offset mens9
int 21h
mov ah,09h

mov dx, offset mens10


int 21h
mov ah,09h
mov dx, offset mens11
int 21h
mov ah,09h
mov dx, offset mens12
int 21h
; leer
mov ah, 01h ; lee las opciones del menu
int 21h
; ajustar el teclado
xor ah, ah ; permite seleccionar la opcion desde el teclado
sub al, 30h
mov cx, 2
; verificar opcion
cmp al, 1
jz autor
cmp al, 2
jz suma
cmp al, 3
jz resta ; las opciones del 1 al 7 permite que el sistema la
opcion que se seleccione
cmp al, 4
jz mult
cmp al, 5
jz divi

cmp al, 6
jz posneg
cmp al, 7
mov AH, 4CH
int 21h
autor:
mov ah, 09h
mov dx, offset mens5
int 21h
jmp menú
suma:
mov ah, 09h
mov dx, offset mens13
int 21h
; lee teclado
mov ah, 01h
int 21h
; verificar si es negativo
cmp al,2dh
je signo
; ajustar teclado
sub al, 30h
add result, al
jmp return1
signo:
mov ah, 01h
int 21h

sub al, 30h


neg al
add result, al
je return1
return1: loop suma
imp1:
cmp result,00 ; imprime el resultado de la suma
jl imp2
mov ah, 02h
mov dl, 10
int 21h
mov ah, 02h
mov dl,13
int 21h
mov ah, 09h
mov dx, offset mens14
int 21h
jmp imprime
imp2:
neg result
mov ah, 02h
mov dl, 10
int 21h
mov ah, 02h
mov dl, 13
int 21h
mov ah, 09h

mov dx, offset mens14


int 21h
mov ah, 02h
mov dl, '-'
int 21h
jmp imprime
imprime:
mov ah, 0
mov al, result ; muestra en pantalla el resultado de la operacion
mov cl, 10
div cl
add al, 30h
add ah, 30h ; pasa a decimal
mov bl, ah
mov dl, al
mov ah, 02h
int 21h
mov dl, bl
mov ah, 02h
int 21h
mov cx, 2
jmp menú
resta:
mov ah, 09h
mov dx, offset mens13
int 21h
; lee teclado

mov ah, 01h


int 21h
; verificando si es negativo
cmp al, 2dh
je signor
sub al, 30h
cmp cx, 2
je etiqueta1
sub result, al
jmp return2
etiqueta1:
mov result, al
jmp return2
signor:
mov ah, 01h
int 21h
sub al, 30h
neg al
cmp cx, 2
je etiqueta1
sub result, al
je return2
return2:
loop resta
jmp imp1
mult:
mov ah, 09h

mov dx, offset mens13


int 21h
; lee teclado
mov ah, 01h
int 21h
; verificando si es negativo
cmp al, 2dh
je signom
sub al, 30h
cmp cx, 2
je etiqueta2
mov ah, 0
mul result
jmp return3
etiqueta2:
mov result, al
jmp return3
signom:
mov ah, 01h
int 21h
sub al, 30h
neg al
cmp cx, 2
je etiqueta2
mov ah, 0
mul result
jmp return3

return3:
loop mult
mov result, al
jmp imp1
mov signox, 0
; negativo o positivo
; imprimir mensaje
posneg:
mov ah, 09h
mov dx, offset mens13
int 21h
; lee teclado
mov ah, 01h
int 21h
sub al, 30h
mov num1, al
int 21h
sub al, 30h
mov ah, num1 ; capturamos el numero para determinar si es positivo
o negativo
cmp ah, 0 ; sirve para hacer la comparacion entre los numeros
negativos y positivos
jl menor ; etiquetas a direccion de los bloques
jg mayor
.exit
menor:
mov ah, 09h
lea dx, mensmenor ; lee el numero si es menor

int 21h ; suspension para darle el control al sistema operativo


jmp menú
mayor:
mov ah, 09h
lea dx, mensmayor ; lee el numero si es mayor
int 21h
cmp al, 2dh
mov ah, 09h ; se verifica en la memoria 09h si se cumple se mueva
al acumulador
je signo
jmp menú ; retorna el menú de opciones
; division
divi:
mov ah, 09h
mov dx, offset mens13 ; aparece un mensaje en pantalla de ingresar
el numero
int 21h
; lee teclado
mov ah, 01h ; lee el numero que seleccione
int 21h
; verificando si es negativo
cmp al, 2dh
je signod
sub al, 30h ; convertimos el valor ingresado a hexadecimal
cmp cx, 2
je etiqueta3
cmp al, 0
mov ah, 0

mov numero, al
mov al, result
div numero
jmp return4
etiqueta3:
mov result, al
jmp return4
signod: ; lee y muestra el numero
mov ah, 01
int 21h
sub al, 30h ; convertimos el valor ingresado a hexadecimal
inc signox
cmp cx, 2
je etiqueta3
mov ah, 0
mov numero, al
mov al, result
div numero
jmp return4
return4: loop divi
mov quotient, al
mov residue, ah
mov result, al
jmp imp3
imp3:
mov ah, 02h
mov dl, 10

int 21h
mov ah, 02h
mov dl, 13
int 21h
mov ah, 09h
mov dx, offset mens14 ; muestra el mensaje en la pantalla el
resultado es
int 21h
jmp imprimedivi
imprimedivi:
mov al, result
mov ch, 30h
add al, ch
add ah, ch
mov bl, ah
mov ah, 9
mov dx, offset mens15
int 21h
cmp signox, 1
jz cambio
jmp termina
cambio:
mov dl, "-"
mov ah, 02h
int 21h
mov signox, 0
termina:
mov dx, 0

add quotient, 30h


mov dl, quotient
mov ah, 02h
int 21h
mov ah, 9
mov dx, offset mens16
int 21h
mov dx, 0
add residue, 30h
mov dl, residue
mov ah,02h
int 21h
jmp menú
fin: ret ; salimos del programa
CAPTURAS POR PANTALLA DE LA EJECUCIÓN
DEL PROTOTIPO.
CONCLUSIONES

1) Hacer este trabajo me permitió solidificar mis habilidades y conocimientos


de programación de computadoras esto me ayudó a comprender cómo
funciona el procesador internamente además los programas de ensamblaje
ocupan menos espacio en la memoria, lo que es beneficioso porque mejora
el rendimiento de la máquina.

2) Gracias al desarrollo de este prototipo en lenguaje ensamblador, nos


hemos dado cuenta de que es la parte fundamental o más importante de la
arquitectura es que nos ayuda a avanzar en nuestras carreras
profesionales.

3) Gracias a este trabajo pudimos integrar y consolidar los conocimientos


adquiridos durante el desarrollo de este prototipo funcional utilizando un
lenguaje ensamblador 100% funcional con los elementos requeridos en las
instrucciones de trabajo.

4) Conocer el funcionamiento de la herramienta EMU8086 para el desarrollo


de las actividades propuestas y adquirir conocimientos de modelos
funcionales en lenguaje ensamblador y ejecute instrucciones de salto.
BIBLIOGRAFÍA

Castro Gil, M. (2014). Estructura y tecnología de computadores I (Gestión y Sistemas), (P.


15-28). Madrid, Spain: UNED - Universidad Nacional de Educación a Distancia.
Recuperado de https://elibro-net.bibliotecavirtual.unad.edu.co/es/ereader/unad/48716?
page=16
Grediaga Olivo, A. (1999). Estructuras de computadores: un computador ejemplo:
MaNoTas. Digitalia. (P. 17-37). Recuperado de https://bibliotecavirtual.unad.edu.co/login?
url=http://search.ebscohost.com/login.aspx?
direct=true&db=nlebk&AN=318001&lang=es&site=eds-
live&scope=site&ebv=EB&ppid=pp_17
Hidalgo, J. (2010). Introducción conceptos fundamentales Arquitectura de PC, (P. 1-31).
Recuperado de http://www.dacya.ucm.es/hidalgo/arquitectura/tema1.pdf
Blanco Martín, J. (2013). Manual administración de hardware de un sistema informático:
formación para el empleo, (P. 17-45). Madrid, Spain: Editorial CEP, S.L. Recuperado de
https://elibro-net.bibliotecavirtual.unad.edu.co/es/ereader/unad/50599?page=18
Vásquez, G. (2012). Arquitectura de computadores I, (P. 9-26). Red tercer Milenio.
Recuperado de
http://www.aliat.org.mx/BibliotecasDigitales/sistemas/Arquitectura_computadoras_I.pdf
Hurtado, A. (2016). http://www.abreojosensamblador.net. (Cap. 1-7). Recuperado
de https://w6h1uvmqkgffmqwddvae2q-on.drv.tw/Arquitectura/ensamblador/Index.html

Rocabado Moreno, S. H. y Arias Figueroa, D. A. (2016). Arquitectura y organización de la


computadora: microprocesadores y programación assembler. Argentina: D - Editorial de la
Universidad Nacional de La Plata.(P. 24-52). Recuperado de https://elibro-
net.bibliotecavirtual.unad.edu.co/es/ereader/unad/77190?page=25

Soriano Payá, A. (2002). Estructuras de computadores: problemas resueltos. Digitalia (P.


13-50). Recuperado
de https://bibliotecavirtual.unad.edu.co/login?url=http://search.ebscohost.com/login.aspx?
direct=true&db=nlebk&AN=318079&lang=es&site=eds-
live&scope=site&ebv=EB&ppid=pp_13
Archivo que contiene Directivas, Operadores e Instrucciones del Lenguaje Ensamblador
del profesor JUAN JUAREZ FUENTES.2. PlayList con videos de funcionamiento del
emu8086  https://youtube.com/playlist?list=PLdmKBroW2fjh73XYFPnHK0uNRMrJlmZBf
https://campus101.unad.edu.co/ecbti97/mod/forum/discuss.php?d=33140 Programa
Emu8086 / Instalacion del 8086
Andonegui Zabala, M. (2007). El sistema numérico decimal, (P. 5-29). Caracas,
Corporación Andina de Fomento. Recuperado de https://elibro-
net.bibliotecavirtual.unad.edu.co/es/ereader/unad/94592?page=5

Arquitecturas de Microprocesadores. (2005). Ediciones Paraninfo, S.A. (P. 122-127).


Recuperado de https://link.gale.com/apps/doc/CX4054500068/GVRL?
u=unad&sid=GVRL&xid=518a42b5

Castro Gil, M. (2014). Estructura y tecnología de computadores I (Gestión y Sistemas).


Madrid, Spain: UNED - Universidad Nacional de Educación a Distancia. (P. 29-78).
Recuperado de https://elibro-net.bibliotecavirtual.unad.edu.co/es/ereader/unad/48716?
page=30

Lindig Bos, M. (2010). ¿Qué hay detrás de las computadoras? México, México: Instituto
Politécnico Nacional. (P. 39-94). Recuperado de https://elibro-
net.bibliotecavirtual.unad.edu.co/es/ereader/unad/72193?page=48

Rocabado Moreno, S. H. y Arias Figueroa, D. A. (2016). Arquitectura y organización de la


computadora: microprocesadores y programación assembler. Argentina: D - Editorial de la
Universidad Nacional de La Plata. (P. 7-18).Recuperado de https://elibro-
net.bibliotecavirtual.unad.edu.co/es/ereader/unad/77190?page=8

Vasquez, G. (2012). Arquitectura de computadores I. (P. 38-50) Red tercer Milenio.


Recuperado de
http://www.aliat.org.mx/BibliotecasDigitales/sistemas/Arquitectura_computadoras_I.pdf

También podría gustarte