Está en la página 1de 16

CICLO DE LA TAREA 3 - DESARROLLAR CÓDIGOS EN LENGUAJES

ENSAMBLADOR

PRESENTADO A:
ANYELO GERLEY QUINTERO

ENTREGADO POR:
FRANKLIN DAVID MARTINEZ – CÓDIGO: 1.065.824.953
JOSE DANIEL MONTES GONZÁLEZ - CÓDIGO: 1.102.877.966
KELLY JOHANA SIERRA - CÓDIGO: 1.065.137.869

GRUPO: 301302_33

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD


ESCUELA DE CIENCIAS BÁSICAS, TECNOLOGÍA E INGENIERÍA
PROGRAMA DE INGENIERÍA DE SISTEMAS
NOVIEMBRE DEL 2019
Introducción

El presente documento tiene como propósito plasmar mediante evidencias lo


aprendido en la unidad tres del curso de arquitectura de computadores, en el que
se explicara mediante un diagrama las instrucciones tipo salto para el lenguaje
ensamblador, seguidamente se requiere haber estudiado la unidad tres para tener
la capacidad de desarrollar las líneas de comandos en ensamblador,
seguidamente se plasma la evidencia de un programa que tiene como objetivo
comparar números pares, impares y el cero con el manejo de registros del
procesador del computador y la lectura del teclado del mismo procesara y
determinara si es lo que se solicita, se requiere haber estudiado la unidad tres
para tener la capacidad de desarrollar las líneas de comandos en ensamblador
Objetivos

Objetivos Específicos.

 Desarrollar prototipos funcionales en lenguajes ensamblador.


 Conocer el funcionamiento de los registros de propósito general.
 Explicar temática por medio de infografía.
 Desarrollar código para leer numero de un digito tomado de teclado y que
determine si es par, impar o cero.
 Desarrollar código para realizar multiplicación de dos números.
Desarrollo de la actividad

* Infografía sobre las instrucciones tipo salto del Lenguaje Ensamblador


(Direcciones corta, cercana y lejana, etiquetas, saltos incondicionales, saltos
condicionales, instrucciones de testeo, decisiones y bucles). Cada instrucción
debe tener una definición y 1 ejemplo en lenguaje ensamblador
* Código en lenguaje ensamblador que permita leer un número de un digito por
teclado y determinar si el número es par, impar o cero. Documentar perfectamente
todo el código. Generar tres capturas por pantalla de la ejecución del programa.
Anexar Archivo .asm del programa
CODIGO

; Nombre del Autor: Franklin David Martínez Mendoza


; Codigo: 1.065.824.953
; Grupo No:301302_33
;Fecha: 15/11/2019
;

.model samll;Se define el modelo de memoria


.stack 64;Se define el tamaño de la pila
.data
;INFORMACION-PORTADA INICIAL
espacio db 13,10,'$';Salto de linea
lectura db 13,10,'NOMBRE DEL AUTOR:Franklin David Martinez Mendoza','$'
lectura1 db 13,10,'CODIGO:1.065.824.953','$'
lectura2 db 13,10, 'GRUPO:301302_33','$'
lectura3 db 13,10, 'FECHA: 15/11/2019','$'
mensaje db 13,10,'DIGITE NUMERO DE UN DIGITO:','$'
mensaje_par db 13,10, '------- el numero es par -------','$'
mensaje_impar db 13,10,'------- el numero es impar -------','$'
mensaje_cero db 13,10,'------- el numero es cero ------','$'
espacio1 db 13,10,'$';Salto de linea
VALOR db 0 ;Variable para el numero que se digita
NUM db 2 ;Variable que se divide por 2
.code
.startup ;Se inicial la codificacion del programa
mov ax, @data ;Segmento de datosmov ds, ax
mov ah, 09h
lea dx, espacio ;Salto de linea
int 21h
mov ah,09h
lea dx, lectura ;Mensaje
int 21h
mov ah,09h
lea dx, lectura1 ;Mensaje
int 21h
mov ah,09h
lea dx, lectura2 ;Mensaje
int 21h
mov ah,09h
lea dx, lectura3 ;Mensaje
int 21h
mov ah,09h
lea dx, espacio ;Finaliza, y da un mensaje con informacion del programa y un
salto de linea
int 21h
mov ah,09h
lea dx, mensaje ;Se muestra el mensaje digite un numero de un digito
int 21h
call leer ;Se lee el numero digito
sub al,30h ;Se captura el numero en al
mov VALOR, al ;Luego se pasa el numero de al a la variable Valor
mov ah, 09h ;Salto de linea
lea dx, espacio
int 21h
mov bl, VALOR ;Se pasa el valor de la variable Valor a bl
cmp bl,0 ;Se compara el valor de bl con 0
je cero ; Al ser la comparacion verdadera, el salto es al procedimiento Cero con
la etiqueta
int 21h
xor ax,ax ;Se limpia el registro AX
mov al,NUM ;Se mueve el valor de la variable NUM a al
mov bl, al ;Se mueve al a bl
mov al, VALOR ;Se colova el valor de la variable Valor, el numero capturado a al
div bl ;Luego se realiza la division
cmp ah,0 ;El residuo se almacena en ah y se realiza la comparacion
jz par ;Salto al procedimiento par
jmp impar ;Salto al pricedimiento impar
;Procedimientos
leer proc near
mov ah, 01h
int 21h
ret
CERO: ;SALTO EN CASO QUE SEA CERO
mov ah,09h
lea dx, mensaje_cero
int 21h
jmp salir
PAR: ;SALTO SI ES PAR
mov ah,09h
lea dx,mensaje_par
int 21h
jmp salir
IMPAR: ;SALTO SI ES IMPAR
mov ah,09h
lea dx, mensaje_impar
int 21h
jmp salir
SALIR:
mov ax, 4c00h ;Finaliza con una funcion para terminar el proceso
int 21h ;llamando a NUM
end

CAPTURES DE PANTALLA
3. Desarrollar un código en lenguaje ensamblador que permita realizar una
multiplicación de dos números a través de sumas sucesivas y una potencia
a través de multiplicaciones sucesivas (para ello debe utilizar instrucciones
tipo bucle). Al inicio del programa se deben capturar por teclado dos
números de un digito cada uno. Documentar perfectamente todo el código.
Generar tres capturas por pantalla de la ejecución del programa. Anexar
Archivo .asm del programa.

CODIGO

; Autor: Kelly Johana Sierra Andrade


; Codigo: 1065137869
; Grupo No:301302-33
; Fecha: Noviembre 19
;
.model small ;Definimos el modulo de memoria
.stack 64 ;Definimos el tamaño de la pila
.data

primernum db 0
segundonum db 0;Declaramos la variable de segundo numero
Tot db 0 ;Declaramos la variable para el resultado
Autoria db 10,13,'AUTOR:Kelly Johana Sierra Andrade','$' ;datos de la
portada inicial
ID db 10,13,'CODIGO:1065137869','$'
Grupo db 13,10, 'GRUPO:301302-33','$'
Fecha db 13,10, 'FECHA: Noviembre 19','$'
num1 db 10,13,10,13,'Ingrese El numero 1:','$' ;Muestrara el mensaje
num2 db 10,13,'ingrese numero 2:','$' ;Muestrara el mensaje
Resultado1 db 10,13, 'multiplicacion:','$' ;Muestrara el mensaje
Resultado2 db 10,13, 'potencia:','$' ;Muestrara el mensaje

.code ;Inicio de la codificacion del programa


inicio proc far
.startup

mov ah,09h ;Despliega usando la funcion 9 de la interrupcion 21h


lea dx, Autoria ;El mensaje aparece uno por uno en la pantalla
int 21h

mov ah,09h ;Despliega usando la funcion 9 de la interrupcion 21h


lea dx, ID ;El mensaje aparece caracter uno por uno a la pantalla
int 21h

mov ah,09h ;Despliega usando la funcion 9 de la interrupcion 21h


lea dx, Grupo ;El mensaje aparece caracter uno por uno a la pantalla
int 21h

mov ah, 09h ;Despliega usando la funcion 9 de la interrupcion 21h


lea dx, Fecha ;El mensaje aparece caracter uno por uno a la pantalla
int 21h ;hasta que detecte el signo $ y termina de enviar

lea dx, num1 ;mostrara el primer numero


int 21h
call visualizar ;leera el primer numero
sub al, 30h ;Se resta el numeropara obtener el numero
mov primernum, al
mov ah, 09h
lea dx, num2
int 21h ;Guardar
call visualizar ;Se lee el segundo numero
sub al, 30h ;Se resta el numeropara obtener el numero
mov segundonum,al
mov cx, 0
mov cl, primernum
mov bl, 0

suma: ;Funcion para la suma


add bl,segundonum
loop suma
mov Tot, bl
mov ah, 09h ;Escribe en pantalla con la funcion 9 de la interrupcion 21h
lea dx, Resultado1 ;Arroja el resultado
int 21h
call imprimir
mov cx, 0
mov cl, primernum
mov al, 1

multiplicar: ;Funcion para la multiplicacion


mul segundonum
loop multiplicar
mov Tot, al
mov ah, 09h ;Escribe en pantalla con la funcion 9 de la interrupcion 21h
lea dx, Resultado2 ;resultado de la multiplicacion
int 21h
call imprimir
visualizar proc near
mov ah, 01h
int 21h
ret
visualizar endp
imprimir proc near
cmp Tot,10
jnae print
mov ax, 0
mov al, Tot
mov dl, 10
div dl
mov dh, ah
mov dl, al
add dl, 30h
mov ah, 02h
int 21h
jmp finalizar ;salto finalizar y reestrablece los valores
print:
mov dl, Tot
add dl, 30h
mov ah, 02h
int 21h
finalizar:
ret
imprimir endp ;finalizara el programa

CAPTURE DE PANTALLA
Conclusiones

 El lenguaje de bajo nivel representa retos importantes ya que se debe

considerar lo más básico de la instrucción, a diferencia de otros lenguajes

de programación en los que se da por entendido implícito algunas

instrucciones.

 Ayuda al aprendizaje de los registros del procesador en donde para

elaborar un código es necesario saber el comportamiento de cada uno.

 El repertorio de instrucciones es de poca cantidad, pero es complejo el uso

al iniciar, se debe entender la lógica de funcionamiento muy buen reto

 Logramos desarrollar prototipos funcionales en lenguajes ensamblador lo

que da cuenta de que se conoce el funcionamiento de los registros de

propósito general por las evidencias que este documento se presenta y la

explicación de la temática por medio de infografía. Se desarrollan los

códigos con estos pertinentes conceptos conocidos como lo es el código

para leer numero de un digito tomado de teclado y que determine si es par,

impar o cero y código para realizar multiplicación de dos números


Referencias Bibliográficas

Arquitectura de una computadora. (2011). Fundamentos de

Informática. Universidad Tecnológica Nacional. Facultad Regional Rosario

Dto. I. Eléctrica. Recuperado de

http://www.frro.utn.edu.ar/repositorio/catedras/electrica/2_anio/fundamentos

_informatica/apuntes/arquitectura/Tema1.pdf

Blum, R. (2005). Professional Assembly Language. Indianapolis, IN: Wrox. (págs.1

- 123). Recuperado de http://bibliotecavirtual.unad.edu.co/login?

url=http://search.ebscohost.com/login.aspx?

direct=true&db=nlebk&AN=127889&lang=es&site=eds-

live&ebv=EB&ppid=pp_123

Hurtado, A. (15 de 11 de 2016). http://www.abreojosensamblador.net. Recuperado

de https://w6h1uvmqkgffmqwddvae2q-

on.drv.tw/Arquitectura/ensamblador/Index.html

También podría gustarte