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 –
- Cargue los datos del desplazamiento 500 al registro CL y establezca el registro CH en 00 (para contar).
- Cargue el primer número (valor) del siguiente desplazamiento (es decir, 501) para registrar AL y disminuya la cuenta en 1.
- 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.
- 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 –
- MOV SI, 500 : establezca el valor de SI en 500
- MOV CL, [SI] : cargar datos desde el desplazamiento SI al registro CL
- MOV CH, 00 : establece el valor del registro CH en 00
- INC SI : aumenta el valor de SI en 1.
- MOV AL, [SI] : valor de carga del desplazamiento SI al registro AL
- DEC CL : disminuye el valor del registro CL en 1
- INC SI : aumenta el valor de SI en 1
- CMP AL, [SI] : compara el valor del registro AL y [SI] (AL-[SI])
- JNC 413 : salta a la dirección 413 si no se genera el acarreo
- MOV AL, [SI] : transfiere datos en el desplazamiento SI para registrar AL
- INC SI : aumenta el valor de SI en 1
- 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
- MOV [600], AL : almacena el valor del registro AL para compensar 600
- 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