Programa 8085 para multiplicar dos números de 8 bits – Part 1

Problema: multiplique dos números de 8 bits almacenados en las direcciones 2050 y 2051. El resultado se almacena en las direcciones 3050 y 3051. La dirección de inicio del programa se toma como 2000. 

Ejemplo – 

Algoritmo – 

  1. Estamos sumando el número 43 siete (7) veces en este ejemplo.
  2. Como la multiplicación de dos números de 8 bits puede tener un máximo de 16 bits , necesitamos un par de registros para almacenar el resultado.

Programa – 
 

Dirección de memoria Mnemotécnica Comentario
2000 LHLD 2050 H←2051, L←2050
2003 XCHG H↔D, L↔E
2004 MOV C, D C←D
2005 MVI D 00 D←00
2007 LXI H 0000 H←00, L←00
200A PAPÁ D HL←HL+DE
200B DCR C C←C-1
200C JNZ 200A Si la bandera cero = 0, vaya a 200A
200F SHLD 3050 H→3051, L→3050
2012 HLT  

Explicación – Registros utilizados: A, H, L, C, D, E 

  1. LHLD 2050 carga contenido de 2051 en H y contenido de 2050 en L
  2. XCHG intercambia contenido de H con D y contenido de L con E
  3. MOV C, D copia el contenido de D en C
  4. MVI D 00 asigna 00 a D
  5. LXI H 0000 asigna 00 a H y 00 a L
  6. DAD D suma HL y DE y asigna el resultado a HL
  7. DCR C decrementa C en 1
  8. JNZ 200A salta el contador de programa a 200A si el indicador cero = 0
  9. SHLD almacena el valor de H en la ubicación de memoria 3051 y L en 3050
  10. HLT deja de ejecutar el programa y detiene cualquier ejecución adicional

Lea a continuación: Programa en lenguaje ensamblador (microprocesador 8085) para sumar dos números de 8 bits
 

Otro enfoque:

Podemos hacer la multiplicación de dos números de 8 bits sin usar los comandos DAD y XCHG.

Programa-

DIRECCIÓN MNEMOTÉCNICA COMENTARIO
2000 LXI H, 2050H  
2003 MOV B, M B←M
2004 INXH  
2005 MOV C, M C←M
2006 MVI A, 00H A←00
2008 ARRIBA:AÑADIR B A<-A+B
2009 DCR C C←C-1
200A SUPERIOR JNZ  
200D INXH  
200E MOV M, A M←A
200F HLT terminar el programa

Explicación: los registros A, H, L, C, B se utilizan para fines generales.

1. LXI H, 2050 cargará el registro de par HL con la dirección 2050 de ubicación de memoria.

2. MOV B, M  copia el contenido de la memoria en el registro B.

3. INX H incrementará la dirección del par HL en uno y lo convertirá en 2051H.

4. MOV C,M copia el contenido de la memoria en el registro C.

5. MVI A,00H asigna 00 a A.

6. arriba : ADD B agrega el contenido del acumulador con el registro B y almacena el resultado en el acumulador.

7. DCR C decrementa el registro C.

8. JNZ TOP salta encima hasta que C no se convierte en 0.

9. INX H  incrementará la dirección del par HL en uno y lo convertirá en 2052H.

10. MOV M,A copia el contenido de A que es nuestra respuesta al registro M.

11. HLT deja de ejecutar el programa y detiene cualquier ejecución posterior.

Publicación traducida automáticamente

Artículo escrito por AnmolAgarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *