Programa 8086 para sumar dos números BCD de 16 bits con acarreo

Problema: escriba un programa en lenguaje ensamblador para sumar dos números BCD de 16 bits con microprocesador 8086 de acarreo. 

Ejemplo – 

Algoritmo – 

  1. Cargue la parte inferior de ambos números BCD de 16 bits en diferentes ubicaciones.
  2. Suma cada número sumando primero su parte inferior.
  3. Repita el paso anterior también agregando el acarreo, si corresponde.
  4. Haga la parte inferior del registro 00 y agregue el acarreo. Esto se hace para obtener el acarreo.
  5. Muestra todos los números con la parte más alta como acarreo, la parte media como suma de los 8 bits BCD más altos y la parte más baja como los 8 bits BCD más bajos.

Programa – 

Dirección de memoria Mnemotécnica Comentarios
0400 MOV AL, [500] AL ← [500]
0404 BL MOV, [502] BL ← [502]
0408 AÑADIR AL, BL AL ← AL+BL
040A DAA Ajuste decimal AL
040B MOV [600], AL LA → [600]
040F MOV AL, [501] AL ← [501]
0413 MOV BL, [503] BL ← [503]
0417 ADC AL, BL AL ← AL+BL+CY
0419 DAA Ajuste decimal AL
041A MOV [601], AL AL → [601]
041E MOV AL, 00 AL ← 00H
0420 CDA AL, AL AL ← AL+AL+CY
0422 MOV [602], AL AL → [602]
0426 HLT Detener ejecución

Explicación – 
 

  1. MOV AL, [500] mueve el valor almacenado en la ubicación de memoria 500 al registro AL.
  2. MOV BL, [502] mueve el valor almacenado en la ubicación de memoria 500 al registro BL.
  3. ADD AL, BL suma los valores en los registros AL y BL.
  4. DAA suma 6 al dígito que es mayor que 9.
  5. MOV [600], AL muestra el valor agregado a la ubicación de memoria 600.
  6. MOV AL, [501] mueve el valor almacenado en la ubicación de memoria 501 al registro AL.
  7. MOV BL, [503] mueve el valor almacenado en la ubicación de memoria 503 al registro BL.
  8. ADC AL, BL suma los valores en los registros AL y BL y lleva (si los hay).
  9. MOV BL, [503] mueve el valor almacenado en la ubicación de memoria 503 al registro BL.
  10. MOV [601], AL muestran el valor agregado en la ubicación de memoria 601.
  11. MOV AL, 00 mueve 00 en el registro AL.
  12. ADC AL, AL suma los valores en los registros AL y AL y lleva (si los hay).
  13. MOV [602], AL muestran el valor agregado en la ubicación de memoria 602.
  14. HLT detiene la ejecución.

Siguiente artículo relacionado: programa 8086 para sumar dos números BCD de 8 bits
 

Publicación traducida automáticamente

Artículo escrito por Sakshi98 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 *