Sei sulla pagina 1di 6

UNIVERSIDAD DE LAS FUERZAS

ARMADAS – ESPE.
Departamento de Eléctrica y Electrónica.

Microprocesadores

TEMA: Multiplicación en lenguaje ensamblador para el Z80.

NRC: 2666

Nombre:
Raham Castillo

Profesora:
Miroslava Zapata

Fecha:
06 de Julio del 2018
1. Tema
Multiplicación en Lenguaje Ensamblador para el Z80.

2. Objetivos
2.1.Objetivo General
 Realizar la multiplicación de dos números para poner en práctica la programación
en lenguaje ensamblador mediante la utilización del software Z80 Simulatore
IDE.

2.2.Objetivos Específicos
 Familiarizarse con el lenguaje ensamblador y su entorno de programación.
 Utilizar el juego de instrucciones del microprocesador Z80 para la realización de
un programa que permita efectuar la multiplicación de dos números.
 Efectuar la operación de multiplicación las veces que el usuario desee.

3. Procedimiento
Para poder realizar este programa se ha tenido en cuenta que para poder efectuar la
operación de multiplicación, se la puede considerar como sumas sucesivas.
 (MPR) representa al Multiplicador y (MPD) es el Multiplicando.
Ejemplo:
4 (MPD)
x 3 (MPR) 4+4+4=12
1 2

El programa efectuará la suma 3 veces el valor del multiplicador.

3.1.Instrucciones empleadas
IN: Transfiere datos hacia dispositivos de entada desde periféricos.
OUT: Transfiere datos hacia dispositivos de salida desde periféricos.
CALL: Llamado a subrutina.
DJNZ: Salto automático que decrementa el registro B y bifurca a una posición
determinada si no vale “0”.
DEC: El contenido de un registro o localidad de memoria es decrementado en uno.
ADD: Suma el contenido de la locación de memoria apuntado por HL del contenido del
acumulador o suma el dato de 8 bits contenido en el acumulador.
JP: Salto absoluto
DAA: Ajuste decimal
.END: Fin del programa
3.2.Diagrama de Flujo del Programa

INICIO
Mapeo de memoria

Ingrese el
multiplicador (MPR)

Ingrese el
multiplicando (MPD)

MULT
Efectúe las sumas
sucesivas

SI Realice el salto a
MULT si B es
diferente de 0

NO

Muestre el
resultado

SI=1
Desea volver a
ejecutar de nuevo
la multiplicación

NO=0

FIN
3.3.Código Fuente en Assembler

3.4.Explicación de las líneas de código

LD HL,1000H Mapeo de la memoria RAM


LD SP,1500H Mapeo de la PILA para que el dispositivo funcione
como se desea
CALL MPINICIO Llamado a la subrutina MPINICIO
CALL MULT Llamado a la subrutina MULT
CALL SALIR Llamado a la subrutina SALIR
Se crea una subrutina MPINICIO, la cual permite realizar el ingreso de datos.
MPINICIO:
IN A,(00H) ;Ingreso MPR. Transfiere el dato del MPR en una
específica dirección de memoria desde el teclado hacia el acumulador
LD B,A Carga el dato guardado en el acumulador al registro B
DEC B Se realiza un decremento del registro B
IN A,(01H) ;Ingreso MPD. Transfiere el dato del MPD en una
específica dirección de memoria desde el teclado hacia el acumulador.
LD (HL),A Carga el dato guardado en el acumulador hacia el
registro principal HL.
Se crea una subrutina MULT, la cual permite efectuar la operación de sumas
sucesivas para poder efectuar la multiplicación.
MULT:
ADD A,(HL) Suma el contenido almacenado en memoria en el
registro HL y lo trasfiere al acumulador
DAA Se realiza un ajuste decimal de la suma para no
visualizarlo en hexadecimal.
DJNZ MULT Realiza un salto de subrutina hasta que el registro B sea
diferente de cero.
OUT (03H),A Transfiere el dato del acumulador hacia una dirección
especificada como salida.
IN A,(03H) ;Desea volver ejecutar 1 salir 0. Solicita un ingreso para efectuar
nuevamente el factorial
LD E,0 Cargamos el valor de cero en el registro E.
CP E Compara el valor del registro A con el registro E.
JR NZ,INICIO Activo la bandera si la comparación no es cero, se repite
la ejecución del programa.
JR Z,SALIR Activo la bandera si la comparación cero salta a la
subrutina SALIR para finalizar el programa.
Se crea una subrutina SALIR, quien terminará la ejecución del programa.
SALIR:
HALT Suspende la ejecución del programa
.END Fin del programa factorial.

3.5.Ejecución del Programa


 En la dirección (00H) se guarda el valor del (MPD).
 En la dirección (01H) se guarda el valor del (MPR).
 En la dirección (03H) se muestra el resultado de la multiplicación.
 En la dirección (05H) se ingresa el valor de “1” para ejecutar nuevamente el
programa, caso contrario “0” para finalizar la ejecución.
Ejemplo 1: 4 x 3 = 12
Se efectúa: 4+4+4=12.
Ejemplo 2: 1: 7 x 5 = 35
Se efectúa: 7+7+7+7+7=35

4. Conclusiones
 Se realizó el programa de multiplicación de dos números empleando el software
de simulación del microprocesador del Z80.
 Fue necesario emplear sumas sucesivas para encontrar el resultado de la
multiplicación de los números ingresados

5. Bibliografía
[1] Zacks R., "Programación del Z80".
[2] Z80 Family., "User Manual".

Potrebbero piacerti anche