0% encontró este documento útil (0 votos)
170 vistas14 páginas

Códigos en Ensamblador: Par, Impar y Más

Este documento presenta dos códigos en lenguaje ensamblador desarrollados por María Angélica Leyva González para la Universidad Nacional Abierta y a Distancia. El primer código lee un número de un dígito del teclado y determina si es par, impar o cero. El segundo código realiza una multiplicación a través de sumas sucesivas y una potencia a través de multiplicaciones sucesivas utilizando bucles. El documento también incluye conclusiones sobre las ventajas del lenguaje ensamblador.

Cargado por

maria gonzalez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
170 vistas14 páginas

Códigos en Ensamblador: Par, Impar y Más

Este documento presenta dos códigos en lenguaje ensamblador desarrollados por María Angélica Leyva González para la Universidad Nacional Abierta y a Distancia. El primer código lee un número de un dígito del teclado y determina si es par, impar o cero. El segundo código realiza una multiplicación a través de sumas sucesivas y una potencia a través de multiplicaciones sucesivas utilizando bucles. El documento también incluye conclusiones sobre las ventajas del lenguaje ensamblador.

Cargado por

maria gonzalez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

ARQUITECTURA DE COMPUTADORES

GRUPO: (202016893A_952)

UNIDAD 3 - TAREA 4
DESARROLLAR CÓDIGOS EN LENGUAJE ENSAMBLADOR

ELABORADO POR
LEYVA GONZALEZ MARIA ANGELICA

PRESENTADO A. TUTOR
 RAMIREZ YAMID EUGENIO

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA


INGENIERA EN SISTEMAS
PERIODO 2021
INFOGRAFÍA
CÓDIGO QUE PERMITA LEER UN NÚMERO DE UN DIGITO POR TECLADO Y
DETERMINAR SI EL NÚMERO ES PAR, IMPAR O CERO

;ARQUITECTURA DE COMPUTADORES
;MARIA ANGELICA LEYVA GONZALEZ

.model small ; define el tipo de memoria que se utilizara


.stack 64 ; es para darle el grandor a la pila
.data

msn1 db 13,10, "Por favor ingrese un numero: ", '$'


msn2 db 13,10, "El numero ingresado es par ", '$'
msn3 db 13,10, "El numero ingresado es impar ", '$'
msn4 db 13,10, "El numero ingresado es cero ", '$'

var1 db 0 ; definimos variables

.code

inicio proc far ; iniciamos procedimiento

mov ax, @data ; direccionamiento de segmentos


mov ds, ax

; limpiar pantalla

mov ah, 00
mov al, 03h
int 10h
mov ah, 09h
lea dx, msn1
int 21h

;leer y convertir el numero para verlo en pantalla

mov ah,01h
int 21h
sub al, 30h ; para convertir en ascii y visualizarlo

mov var1, al
int 21h
sub al, 30h
mov ah, var1
mov bl, var1
cmp bl,1

JP PAR ; si es par
JNP IMPAR ; si es impar
Jz CERO ; es cero

;cuando es par que muestre en el msn2


PAR:
mov ah,09h
lea dx, msn2
int 21h
jmp salir
;cuando es impar mostrar el msn3

IMPAR:
mov ah,09h
lea dx, msn3
int 21h
jmp salir
;cuando es cero mostrar el msn4
CERO:
mov ah,09h
lea dx, msn4
int 21h
jmp salir
; salir del programa
salir:
mov ax, 4c00h
int 21h
inicio endp
end inicio

ret
CÓDIGO 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).

;MARIA ANGELICA LEYVA GONZALEZ


;ARQUITECTURA DE COMPUTADORES
.model small ;Modelo de memoria pequeño
.stack 64 ;Tamaño de la pila
.data ;Declaración de datos

msg1 db "Por favor ingrese el primer numero: " , '$'


num1 db 0

msg2 db "Por favor ingrese el segundo numero: " , '$'


num2 db 0

msg3 db "La multiplicacion es: ",'$'


res1 db 00
msg4 db "La potencia es: ",'$'
res2 db 00

salto db "",13,10,'$'

.code ;Declaracion de codigo

inicioproceso: ;Inico de procedimiento

mov ax, @data ;Movimiento de direccion del segmento de datos a imprimir el registro
ax
mov ds, ax ;Movimiento del contenido de ax a ds para poder visualizarse

mov ax, 00 ;Establece modo de video


mov al, 03h ;Modo de video
int 10h ;Interrumpir

;Mostrar mensaje msg1

mov ah, 09 ;Se visualiza pantalla


lea dx, msg1 ;Mensaje que se visualiza
int 21h ;Interrumpir

;Leer y guardar número 1 en la variable

mov ah, 01h ;Funcion de entrada de caracter


int 21h ;Interrumpir
sub al, 30h ;Se resta el contenido de al a la variable num1
mov num1, al ;Movimiento de contenido de al a la variable num1

;salto
mov ah, 09 ;Funcion para visualizar en pantalla
lea dx, salto ;Nueva linea
int 21h ;Interrumpir

;Mostrar mensaje msg2

mov ax, @data ; Movimiento de direccion de segmento datos a imprimir al registro ax


mov ds, ax ; Movimiento de contenido de ax a ds
mov ah, 09 ; Código a visualizarse
lea dx, msg2 ; Dato que se visualiza
int 21h ; Interrumpir

;Leer y guardar num2 en la variable

mov ah, 01h ; Función para leer caracter por teclado


int 21h ; Interrumpir
sub al, 30h ; Resta 30 hexadecimal al caracter para convertir el número de ascit
mov num2, al ; Movimiento del contenido al a la variable num2

;salto
mov ah, 09 ; Función para visualizar en pantalla
lea dx, salto ; Nueva linea
int 21h ; Interrumpir

;loop mult
mov cl, num2 ; Movimiento del valor num2 al registro contador cl para el bucle
mov al, 0 ; Inicia al con valor = 0
mov bl, num1 ; Movimiento del contenido num1 al registro bl para la operación
mult: ; Inicio biucle mult
add al, bl ; Unir el valor del registro dl a al, inicia en 0
loop mult ; Decrementa cl en cada ciclo hasta cl = 0
mov res1, al ; Movimiento del resultado de al a res1

;loop pot
mov cl, num2 ; Movimiento de valor num2 al registro contador cl para controlar el
bucle
mov al, 1 ; Inicia al con valor = 1
mov bl, num1 ; Carga bl con valor que contiene num1
pot: ; Inicio bucle pot
mul bl ; Intrucción que multiplica bl con al = 1 y se guarda en al el resultado
loop pot ; Decrementa cl en cada ciclo hasta cl = 0
mov res2, al ; Movimiento del resultado de al a rest 2

; Mostrar mensaje msg3


mov ax, @data ; Movimiento de dirección de segmento de datos a imprimir el al
registro ax
mov ds, ax ; Movimiento de contenido de ax a ds para visualizarse
mov ah, 09 ; Código para mostrar por pantalla
lea dx, msg3 ; Dato que se visualiza
int 21h ; Interrumpir

;Imprimir res1
mov dl, res1 ; Movimiento dl al res1
add dl, 30h ; Movimiento a dl 30 hexadecimal para convertir a ascit
mov ah, 02h ; Función para visualizar por pantalla
int 21h ; Interrumpir

;salto
mov ah, 09 ; Función para visualizar en pantalla
lea dx, salto ; Nueva linea
int 21h ; Interrumpir

; Mostrar mensaje msg4


mov ax, @data ; Movimiento de dirección de segmento de datos a imprimir al registro
ax
mov ds, ax ; Movimiento de contenido de ax a ds para poder visualizarse
mov ah, 09 ; Código para visualizar en pantalla
lea dx, msg4 ; Dato que se visualiza
int 21h ; Interrumpir

; Imprimir res2
mov dl, res2 ; Movimiento de dl a res2
add dl, 30h ; Movimiento de dl 30 hexadecimal para convertir ascit
mov ah, 02h ; Función para visualizar por pantalla
int 21h ; Interrumpir

fin:
int 21h ; Interrumpir
mov ax, 4c00h

endp
END
CONCLUSIONES

Como conclusión podemos decir que el lenguaje ensamblador es más que un tipo de
lenguaje de bajo nivel en el cual es empleado para crear programas informáticos. Este
lenguaje es creado a base de instrucciones para intentar sustituir al lenguaje maquina por
uno similar utilizado por el hombre que tiene como importancia que se pueden realizar
cualquier tipo de programa como en otros lenguajes de alto nivel no, al igual que ocupan
menos espacio en la memoria. También está ocupado al diseño de las tarjetas madres, cosa
que un programa común no podría hacer.

También podría gustarte