Unidad profesional interdisciplinaria de ingenierías
Campus Zacatecas.
Asignatura:
MICROPROCESADORES, MICROCONTROLADORES E INTERFAZ
TAREA 03: Programación en lenguaje ensamblador.
Docente:
ORENDAY DELGADO ADAN
Alumno:
Ricardo Menchaca Esparza
Grupo:
2MM4
Carrera:
ingeniería Mecatrónica
name "Pomedio de 8 numeros"
org 100h
.model small
.stack 100h
;Primero se introducen las variables que vamos a utilizar para la ejecución de este programa
(división, decenas, unidades, números y suma)
.data
division db 0
decenas db 0
numeros db 8 dup(0)
suma dw 0
unidades db 0
;Las siguientes líneas son las que se imprimirán en la pantalla.
instruccion db 'Escribe los 8 numeros:$'
resultado db 'El promedio es: $'
;Aquí comienza el código necesario para la elaboración de dicho programa.
.code
;En esta primera parte es la que se encarga de mostrarnos la instrucción en la ventana
mov ah,9
mov dx,offset instruccion
int 21h
;Esta segunda parte es donde introducimos los 8 números de dos digitos
mov di,0
mov cx,0
leer_numeros:
mov ah,1
int 21h
sub al,30h
mov bl,10
mul bl
mov decenas,al
mov ah,1
int 21h
sub al,30h
mov unidades,al
mov bl,unidades
add bl,decenas
mov numeros[di],bl
mov ah,2
mov dl,' '
int 21h
inc di
cmp di,8
jne leer_numeros
;Esta tercera parte es la encargada de ejecutar la operación de suma de los 8 números
introducidos
mov di,0
ressuma:
mov al,numeros[di]
add ax,suma
mov suma,ax
inc di
cmp di,8
jne ressuma
;Esta cuarta parte del código es en donde se elabora el proceso de obtención del promedio
add cx,suma
mov ax,cx
mov bx,8
mov dx,0
div bx
;Aquí se respalda ax como se vio en clase.
push ax
mov ah,2
mov dl,10
int 21h
;A continuación de escribe un salto de línea
mov ah,2
mov dl,13
int 21h
;Esta parte es la encargada de imprimir la variable de resultado en la pantalla
mov ah,9
mov dx,offset resultado
int 21h
pop ax
;La siguiente parte del código es la que nos muestra el resultado del promedio de los 8 números
dados en pantalla
mov ah,0
mov ah,division
aam
;Aquí se ejecuta una conversión de ascii a caracteres
mov bx,ax
add bl,30h
add bh,30h
; Y por último esto nos muestra las decenas y unidades del resultado respectivamente en la
pantalla.
mov ah,2
mov dl,bh
int 21h
mov ah,2
mov dl,bl
int 21h
ret
Captura de el funcionamiento correcto en el programa