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.