Programa 8086 para generar series AP de n números

Problema: escriba un programa en el microprocesador 8086 para generar series de progresión aritmética (AP) de n números de ocho bits.

Suposiciones:
suponga que el tamaño «n» se almacena en el desplazamiento 500 y el primer número (a) se almacena en el desplazamiento 501 y la diferencia común se almacena en el desplazamiento 502. Almacene la serie en la dirección de memoria desplazamiento 600.

Ejemplo –

Algoritmo –

  1. Almacene 500 en SI y 600 en DI. Cargue datos desde el desplazamiento 500 al registro CL y establezca el registro CH en 00 (para contar).
  2. Aumenta el valor de SI en 1.
  3. Cargue el primer número (valor) del siguiente desplazamiento (es decir, 501) para registrar AL.
  4. Almacene el valor del registro AL en el desplazamiento de memoria DI.
  5. Aumente el DI en 1.
  6. Disminuya el CL en 1.
  7. Cargue el segundo número (diferencia común) del siguiente desplazamiento (es decir, 502) para registrar BL.
  8. Añadir registro AL y BL.
  9. Almacene el resultado (valor del registro AL) en el desplazamiento de memoria DI.
  10. Aumenta el valor de SI en 1.
  11. Bucle por encima de 3 hasta que el registro CX obtenga 0.

Programa –

DIRECCIÓN DE MEMORIA MNEMOTÉCNICA COMENTARIO
400 MOV SI, 500 SI<-500
403 CL MOV, [SI] CL<-[SI]
405 CA MOV, 00 CH<-00
407 INC SI SI<-SI+1
408 MOV AL, [SI] AL<-[SI]
40A INC SI SI<-SI+1
40B MOV DI, 600 DI<-600
40E MOV [DI], AL [DI]<-AL
410 INC DI DI<-DI+1
411 CL CL CL<-CL-1
412 MOV BL, [SI] BL<-[SI]
414 AÑADIR AL, BL AL<-AL+BL
416 MOV [DI], AL [DI]<-AL
418 INC DI DI<-DI+1
419 BUCLE 414 SALTAR A 414 SI CX!=0 y CX=CX-1
41B HLT final

Explicación –

  1. MOV SI, 500: establezca el valor de SI en 500.
  2. MOV CL, [SI]: carga datos desde el desplazamiento SI al registro CL.
  3. MOV CH, 00: establece el valor del registro CH en 00.
  4. INC SI: aumenta el valor de SI en 1.
  5. MOV AL, [SI]: carga el valor del desplazamiento SI al registro AL
  6. INC SI: aumenta el valor de SI en 1.
  7. MOV DI, 500: establezca el valor de DI en 600.
  8. MOV [DI], AL: almacena el valor del registro AL en el desplazamiento DI.
  9. INC DI: aumenta el valor de DI en 1.
  10. DEC CL: disminuye el valor del registro CL en 1.
  11. MOV BL, [SI]: carga el valor del desplazamiento SI al registro BL.
  12. MUL BL: suma valor del registro AL por BL.
  13. MOV [DI], AL: almacena el valor del registro AL en el desplazamiento DI.
  14. INC DI: aumenta el valor de DI en 1.
  15. BUCLE 414: salta a la dirección 414 si CX no es 0 y CX=CX-1.
  16. HL: detener.

Publicación traducida automáticamente

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