Vous êtes sur la page 1sur 15

Arquitectura de Computadores

Ciclo Tarea 3 – Trabajo Colaborativo 3

Yenith Parra

Tutor:
Anyelo Quintero

Grupo:
301302_46

Universidad Nacional Abierta Y A Distancia


Abril 2018
Introducción

En el presente trabajo se dan a conocer los diferentes diseños en relación con el ciclo de
tarea 3, donde por medio de una infografía se evidencian instrucciones tipo de salto del
lenguaje ensamblador. De igual forma la realización de ejercicios con el programa
EMU8086 documentando el procedimiento.
OBJETIVO GENERAL

Conocer el funcionamiento de los registros de tipo general del lenguaje


ensamblador.

OBJETIVOS ESPECIFICOS

 Mediante la elaboración de una infografía, explicar los registros tipo


salto del lenguaje ensamblador.
Actividad

Desarrollar un 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.
Código en lenguaje ensamblador:

Nombre autor: Yenith Parra


;Codigo: 30508899
;Grupo Numero:301302_46
;Fecha: 28 de abril del 2019
;Programa que permite leer un numero de un digito por teclado y determinar si es par,
impar o cero
.model small; configuracion del model
.stack 64;asignacion del tamaño
;configuracion de los dtos que se van a utilizar
.data

;Asignacion de memoria en etiquetas


Numero db 0
Numero1 db 2
Numero2 db 4
Numero3 db 6
Numero4 db 8
Numero5 db 10

;Mostrar en pantalla
Mpar db 13,10, 'El numero es par $';Inicializacion de cadena
Mimpar db 13,10, 'El numero es impar $';Inicializacion de cadena
Mcero db 13,10, 'El numero es cero $';Inicializacion de cadena
Solicitud db 13,10, 'Ingrese un Numero $';Inicializacion de cadena
.code

inicio:;ETIQUETA

mov ax, @data;mueve lo que se encuentra en ax


mov ds, ax

mov ah,9
lea dx, Solicitud
int 21h

mov ah, 1
int 21h
sub al,30h
mov Numero, al ;mueve a al el valor del numero
int 21h

mov bl, Numero ;mueve a bl el valor del numero


cmp bl,0 ;Compara el valor del numero (registro bl) con 0

jz Cero;Nemonico que permite el salto a la etiqueta "Cero" cuando el destino sea igual
que el origen

mov bl, Numero ;mueve a bl el valor del numero


cmp bl,Numero1 ;Compara el valor del numero (registro bl) con numero1

jz Par;Nemonico que permite el salto a la etiqueta "Par" cuando el destino sea igual que
el origen
jc Impar;Nemonico que permite el salto a la etiqueta "Impar" cuando el destino sea
menor que el origen
mov bl, Numero ;mueve a bl el valor del numero
cmp bl,Numero2 ;Compara el valor del numero (registro bl) con numero2

jz Par;Nemonico que permite el salto a la etiqueta "Par" cuando el destino sea igual que
el origen
jc Impar;Nemonico que permite el salto a la etiqueta "Impar" cuando el destino sea
menor que el origen

mov bl, Numero ;mueve a bl el valor del numero


cmp bl,Numero3 ;Compara el valor del numero con numero3

jz Par;Nemonico que permite el salto a la etiqueta "Par" cuando el destino sea igual que
el origen
jc Impar;Nemonico que permite el salto a la etiqueta "Impar" cuando el destino sea
menor que el origen

mov bl, Numero ;mueve a bl el valor del numero


cmp bl,Numero4 ;Compara el valor del numero con numero4

jz Par;Nemonico que permite el salto a la etiqueta "Par" cuando el destino sea igual que
el origen
jc Impar;Nemonico que permite el salto a la etiqueta "Impar" cuando el destino sea
menor que el origen

mov bl, Numero ;mueve a bl el valor del numero


cmp bl,Numero5 ;Compara el valor del numero con numero5

jz Par;Nemonico que permite el salto a la etiqueta "Par" cuando el destino sea igual que
el origen
jc Impar;Nemonico que permite el salto a la etiqueta "Impar" cuando el destino sea
menor que el origen
;Bloques de codigo donde va a saltar dependiendo del resultado de la comparacion

Par:;ETIQUETA
mov ah,9
lea dx, Mpar ;lee el contenido de la cadena
int 21h
.exit

Impar:;ETIQUETA

mov ah,9
lea dx, Mimpar ;lee en dx lo que tenga Mcero porque ahi es donde se contiene la cadena
si el numero es impar
int 21h
.exit

Cero:;ETIQUETA
mov ah, 9
lea dx, Mcero ;lee en dx lo que tenga Mcero porque ahi es donde se contiene la cadena
si el numero es cero
int 21h
.exit

ret
Código
Ejecución del programa
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. Código en lenguaje ensamblador:

;Nombre autor: Yenith Parra


;Codigo: 30508899
;Grupo Numero:301302_46
;Fecha: 28 de abril del 2019
;programa de mutiplicacion (sumas sucesivas) y potencias(multiplicaciones sucesivas)

.model small;configuracion del model


.stack 64;asignacion del tamaño
;configuracion de los datos que se van a utilizar
.data

;Asignacion de memoria en etiquetas


num1 db 0
num2 db 0
resp db 0

;Textos a mostrar en pantalla e inicializacion de cadenas


msj db 13,10, '*****-----MULTIPLICACION Y POTENCIA*****-----','$'
msj1 db 13,10, ' Ingrese El Exponente:','$'
msj2 db 13,10, ' Ingrese La Base: ','$'
resp1 db 13,10, ' El Producto Es: ','$'
resp2 db 13,10, ' La Potencia Es: ','$'

.code
.startup

mov ah, 09h;utiliza la interrupcion a imprimir, 09h se utiliza para imprimir caracteres por
pantalla
lea dx, msj;lee el contenido de la cadena
int 21h
lea dx, msj1
int 21h

call leer
sub al, 30h
mov num1, al
mov ah,09h
lea dx, msj2
int 21h

call leer; Llama a la funcion leer


sub al, 30h
mov num2, al
mov cx, 0
mov cl, num1
mov bl, 0

;SUMA SUCESIVA
suma:;Etiqueta
add bl, num2
loop suma
mov resp,bl
mov ah,09h
lea dx, resp1
int 21h
call imprimir; Llama a la funcion imprimir

;MULTIPLICACION SUCESIVA
mov cx,0
mov cl,num1
mov al,1
multiplicacion:;Etiqueta
mul num2
loop multiplicacion
mov resp, al;Mueve la respuesta a al
mov ah, 09h
lea dx, resp2
int 21h
call imprimir

leer proc near


mov ah, 01h;Se utiliza para capturar un caracter
int 21h
ret
leer endp

imprimir proc near


cmp resp, 10
jnae impr;Salta a la etiqueta impr si esta abajo o si no es igual
mov ax,0
mov al,resp
mov dl,10
div dl
mov dh, ah
mov dl, al
add dl,30h
mov ah,02h
int 21h
mov dl,dh
add dl, 30h
mov ah, 02h
int 21h
jmp terminar

impr:;Etiqueta
mov dl, resp
add dl, 30h
mov ah, 02h
int 21h
terminar:;Etiqueta
ret
imprimir endp

Código
Ejecución del ejercicio

Vous aimerez peut-être aussi