Programa 8086 para determinar el número más grande en una array de n números

Problema: escriba un programa en el microprocesador 8086 para encontrar el mayor entre n números de 8 bits, donde el tamaño «n» se almacena en la dirección de memoria 2000: 500 y los números se almacenan desde la dirección de memoria 2000: 501 y almacenan el resultado (mayor número) en la dirección de memoria 2000: 600.

Ejemplo –

Algoritmo –

  1. Cargue los datos del desplazamiento 500 al registro CL y establezca el registro CH en 00 (para contar).
  2. Cargue el primer número (valor) del siguiente desplazamiento (es decir, 501) para registrar AL y disminuya la cuenta en 1.
  3. Ahora compare el valor del registro AL de los datos (valor) en la siguiente compensación, si esos datos son mayores que el valor del registro AL, actualice el valor del registro AL a esos datos; de lo contrario, no cambiará, y aumente el valor de compensación para la próxima comparación y disminuya el conteo en 1 y continúe esto hasta que la cuenta (valor del registro CX) se convierta en 0.
  4. Almacene el resultado (valor del registro AL) en la dirección de memoria 2000: 600.

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 CL CL CL<-CL-1
40C INC SI SI<-SI+1
40D CMP AL, [SI] AL-[SI]
40F JNC 413 SALTAR A 413 SI CY=0
411 MOV AL, [SI] AL<-[SI]
413 INC SI SI<-SI+1
414 BUCLE 40D CX<-CX-1 Y SALTAR A 40D SI CX NO ES 0
416 MOV [600], AL AL->[600]
41A HLT FINAL

Explicación –

  1. MOV SI, 500 : establezca el valor de SI en 500
  2. MOV CL, [SI] : cargar 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] : valor de carga del desplazamiento SI al registro AL
  6. DEC CL : disminuye el valor del registro CL en 1
  7. INC SI : aumenta el valor de SI en 1
  8. CMP AL, [SI] : compara el valor del registro AL y [SI] (AL-[SI])
  9. JNC 413 : salta a la dirección 413 si no se genera el acarreo
  10. MOV AL, [SI] : transfiere datos en el desplazamiento SI para registrar AL
  11. INC SI : aumenta el valor de SI en 1
  12. LOOP 40C : disminuye el valor del registro CX en 1 y salta a la dirección 40D si el valor del registro CX no es cero
  13. MOV [600], AL : almacena el valor del registro AL para compensar 600
  14. HLT : 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 *