Está en la página 1de 28

Tarea 6 Desarrollar un prototipo funcional

Estudiante

Universidad Nacional Abierta y a Distancia UNAD

Arquitectura de computadores

Tutor

23 de mayo de 2021
INTRODUCCIÓN

El siguiente trabajo académico, está encaminado a dar constancia del conocimiento del
manejo del lenguaje ensamblador y para esto se deberá desarrollar un prototipo funcional
donde tendrá las siguientes características:
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

En datos del autor se deberá imprimir en pantalla del nombre del estudiante, centro UNAD
donde estudia y la fecha de presentación. Para las operaciones 2,3,4 y 5 se debe solicitar
por teclado dos números de un solo digito, en la operación 6 se debe digitar un solo número
por teclado. Para finalizar se realizarán conclusiones donde se explicará lo aprendido en la
actividad y el curso Arquitectura de computadores.
Objetivo General

 Desarrollar un prototipo funcional en Lenguaje ensamblador.

Objetivos específicos

 Crear un menú que contenga datos del autor, operaciones aritméticas, validación de
número negativo – positivo y la opción de salir del programa.
 Realizar programa en emu8086 y pasarlo a formato .ASM
 Escribir dos conclusiones generales y 5 conclusiones de la actividad final.
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
Código 1

.model small

.stack 100

.data

mensaje1 db 'Numero 1: ','$' ;

mensaje2 db 13,10,'Numero 2: ','$'

mensaje3 db 13,10,'Suma: ','$'

mensaje4 db 13,10,'Resta: ','$'

mensaje5 db 13,10,'Multiplicacion: ','$'

mensaje6 db 13,10,'Division: ','$'

mensaje7 db 13,10,'Para volver al menu presiona 1 de lo contrario oprima cualquier tecla dos
veces: ','$'

mensaje8 db 13,10,'Seleccione una opcion: ','$'

mensaje9 db 13,10,'Numero a comparar: ','$'

Renglon db 13,10, '$'

variable1 db 0

variable2 db 0

variable3 db 0

variable4 db 0

variable5 db 0

menu1 db 13,10, 'Bienvenido al Menu de opciones, , elige la que desees escribiendo uno de los
siguientes numeros','$'

menu2 db 13,10, '_________________','$'

menu3 db 13,10, '1. Datos del autor','$'

menu4 db 13,10, '2. Sumar dos numeros','$'


menu5 db 13,10, '3. Restar dos numeros','$'

menu6 db 13,10, '4. Multiplicar dos numeros','$'

menu7 db 13,10, '5. Dividir dos numeros','$'

menu8 db 13,10, '6. Positivo o negativo','$'

menu9 db 13,10, '7. Salir','$'

texto1 db 13,10, 'Datos del autor','$'

texto2 db 13,10, '_______________','$'

texto3 db 13,10, 'Maria ','$'

texto4 db 13,10, 'C.c','$'

texto5 db 13,10, 'CEAD- ','$'

texto6 db 13,10, '19/05/2021','$'

resp1 db 13,10, 'El numero ingresado es positivo','$'

resp2 db 13,10, 'El numero ingresado es negativo','$'

resp3 db 13,10, 'El numero es Neutro','$'

.code

.startup

jmp menu

menu:

call limpia; se utiliza para limpiar pantalla

mov ah,09h

lea dx, menu1

int 21h

mov ah,09h
lea dx, menu2

int 21h

mov ah,09h

lea dx, menu3

int 21h

mov ah,09h

lea dx, menu4

int 21h

mov ah,09h

lea dx, menu5

int 21h

mov ah,09h

lea dx, menu6

int 21h

mov ah,09h

lea dx, menu7

int 21h

mov ah,09h

lea dx, menu8

int 21h

mov ah,09h

lea dx, menu9


int 21h

mov ah,09h

lea dx, menu2

int 21h

jmp opcion

opcion:

mov ah,09

lea dx, mensaje8

int 21h

call leer

sub al,30h

mov variable3,al

mov al, variable3

cmp al, 1

je autor1

jmp siguiente1

siguiente1:

cmp al, 2

je suma1

jmp siguiente2

siguiente2:

cmp al, 3
je resta1

jmp siguiente3

siguiente3:

cmp al, 4

je multi1

jmp siguiente4

siguiente4:

cmp al,5

je divi1

jmp siguiente5

siguiente5:

cmp al,6

je compar1

jmp salir

autor1:

jmp autor

suma1:

jmp suma

resta1:
jmp resta

multi1:

jmp multi

divi1:

jmp divi

compar1:

jmp compar

;---------DATOS DEL AUTOR-----------------

autor:

call limpia; limpia

mov ah, 09h

lea dx, texto1

int 21h

mov ah, 09h

lea dx, texto2

int 21h

mov ah, 09h

lea dx, texto3

int 21h

mov ah, 09h

lea dx, texto4


int 21h

mov ah, 09h

lea dx, texto5

int 21h

mov ah, 09h

lea dx, texto6

int 21h

jmp salir

;----------------SUMA-------------

suma:

call limpia

mov ah,09h

lea dx, mensaje1

int 21h

call leer

sub al,30h

mov variable1, al

mov ah, 09h

lea dx, mensaje2

int 21h

call leer

sub al, 30h


mov variable2, al

mov bl, variable2

mov ah,09h

lea dx, mensaje3

int 21h

add bl, variable1

mov dl,bl

add dl,30h

mov ah,02h

int 21h

jmp salir

;---------------RESTA---------------

resta:

call limpia

mov ah,09h

lea dx, mensaje1

int 21h

call leer

sub al,30h

mov variable1,al

mov ah,09h
lea dx,mensaje2

int 21h

call leer

sub al, 30h

mov variable2,al

mov bl, variable2

mov bl,variable1

sub bl,variable2

mov ah,09h

lea dx,mensaje4

int 21h

mov dl,bl

add dl,30h

mov ah,02h

int 21h

jmp salir

;---------------MULTIPLICACION---------------

multi:

call limpia

mov ah,09h

lea dx,mensaje1

int 21h

call leer

sub al,30h
mov variable1,al

mov ah,09h

lea dx, mensaje2

int 21h

call leer

sub al,30h

mov variable2,al

mov bl,variable2

mov ah,09h

lea dx,mensaje5

int 21h

mov al, variable1

mov bl, variable2

mul bl;

mov dl,al

add dl,30h

mov ah,02h

int 21h

jmp salir

;-----------------DIVISION------------------

divi:

call limpia

mov ah,09h

lea dx,mensaje1

int 21h
call leer

sub al,30h

mov variable1,al

mov ah,09h

lea dx,mensaje2

int 21h

call leer

sub al,30h

mov variable2,al

mov bl,variable2

mov ah,09h

lea dx,mensaje6

int 21h

xor ax,ax

mov al,variable2

mov bl,al

mov al,variable1

div bl

mov bl,al

mov dl,bl

add dl,30h

mov ah, 02h

int 21h

jmp salir
;--------------------POSITIVO O NEGATIVO------------------

compar:

call limpia

mov ah,09h

lea dx,mensaje9

int 21h

call leer

sub al,30h

mov variable5,al

mov al, variable5

cmp al,0

jg positivo

jl negativo

jz cero

positivo:

call limpia

mov ah,09h

lea dx,resp1

int 21h

jmp salir

negativo:

call limpia

mov ah,09h

lea dx, resp2


int 21h

jmp salir

cero:

call limpia

mov ah,09h

lea dx, resp3

int 21h

jmp salir

;------------------SALIR-----------------

salir:

mov ah,09h

lea dx,mensaje7

int 21h

call leer

sub al,30h

mov variable4,al

mov al,variable4

cmp al,1

je menup

call leer

mov ah,4ch

int 21h
menup:

jmp menu

;--------PROCEDIMIENTOS O PROCESOS-------

limpia proc near

mov ah,00h

mov al,03h

int 10h

ret

limpia endp

leer proc near

mov ah,01h

int 21h

ret

leer endp

salto proc near

mov ah, 09h

lea dx, renglon


int 21h

mov dl, 00h

salto endp

end

Capturas
Conclusiones Generales

1. El lenguaje ensamblador es un lenguaje de programación de bajo nivel, este por


medio de mnemónicos de instrucciones básicas para que los computadores lo
ejecuten. Este programa se diferencia de la mayoría de los lenguajes que son de alto
nivel, estos lenguajes mayormente son portables.
Al llevar a cabo el programa requerido en la guía de actividades de la tarea 6, se realizó la
presentación de un menú, donde sus opciones eran las siguientes:
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

Se crearon métodos por los cuales se realizará cada una de estas operaciones y cumple con
las condiciones las cuales eran escribir un número de un solo dígito, mostrar los datos del
estudiante y salir del programa.

2. E código escrito en Lenguaje Ensamblador tiene una estructura cercana al lenguaje


máquina, es decir que es de bajo nivel, por esta razón cuenta con cierta dificultad
para su desarrollo y entendimiento a la hora que crear programas y ejecutar su
solución.
Conclusiones grupales

1. Al dar por finalizada la actividad se puede concluir que, el lenguaje ensamblador de


bajo nivel es utilizado para traducir sentencias al código de máquina del computador
en el cual se ejecuta un programa. Este lenguaje fue el primer intento en el hallazgo
de un sustituto más fácil y rápido en poder hallar comunicación de forma directa
con el Hardware de un dispositivo. Este cuenta con una estructura compleja de
desarrollar, un ejemplo es el programa que se realizó, allí se solicitaba crear un
menú de operaciones en donde era necesario escribir un número de un solo digito, al
realizar cualquier operación y dar como resultado un número de dos o más dígitos
se representaba con un carácter diferente, esto se puede verificar en una tabla
llamada ASCII Character set.
2. El lenguaje ensamblador es un lenguaje de programación de bajo nivel, este por medio de
mnemónicos de instrucciones básicas para que los computadores lo ejecuten. Este programa
se diferencia de la mayoría de los lenguajes que son de alto nivel, estos lenguajes
mayormente son portables.
Al llevar a cabo el programa presentado en la guía de actividades se evidencia el proceso y
creación del código de bajo nivel dando solución a los requerimientos estipulados.

3. E código escrito en Lenguaje Ensamblador tiene una estructura cercana al lenguaje


máquina, es decir que es de bajo nivel, por esta razón cuenta con cierta dificultad para su
desarrollo y entendimiento a la hora que crear programas y ejecutar su solución.

4. Al dar por finalizada la actividad se puede concluir que, el lenguaje ensamblador de bajo
nivel es utilizado para traducir sentencias al código de máquina del computador en el cual
se ejecuta un programa. Este lenguaje fue el primer intento en el hallazgo de un sustituto
más fácil y rápido en poder hallar comunicación de forma directa con el Hardware de un
dispositivo.
5. Al dar por finalizado el curso de arquitectura de computadores, se puede concluir que el
lenguaje ensamblador facilita las operaciones de números enteros tales como: (de 8, 16, 32
y 64 bits dependiendo de la arquitectura de la CPU, en los sistemas muy viejos también de
12, 18, 24, 36 y 48 bits)

 Operaciones aritméticas: suma, resta, multiplicación, división, módulo, cambio


de signo.
 Operaciones booloneas: Operaciones realizadas con lógica, bit a bit como AND,
OR, XOR, NOT.

También podría gustarte