Problema: escriba un programa en lenguaje ensamblador en un microprocesador 8085 para encontrar un máximo y un mínimo de 10 números.
Ejemplo –
Minimum: 01H, Maximum: FFH
En la instrucción CMP:
Si Acumulador > Registro, entonces se restablecen los indicadores de acarreo y cero
. Si Acumulador = Registro, entonces se establece el indicador cero.
Si Acumulador < Registro, entonces se establece el indicador de acarreo.
Suposición: lista de números de 2050H a 2059H y salida a 2060H y 2061H.
Algoritmo –
- El número máximo se almacena en el registro B y el mínimo en el registro C
- Cargar contador en registro D
- Cargue el elemento inicial en el acumulador, registro B y C
- Comparar acumulador y registro B
- Si el indicador de acarreo no está configurado, transfiera el contenido del Acumulador a B. De lo contrario, compare el Acumulador con el registro C, si el indicador de acarreo está configurado, transfiera el contenido del Acumulador a C
- Registro de decremento D
- Si D>0, tome el siguiente elemento en Acumulador y vaya al punto 4
- Si D = 0, almacene el registro B y C en la memoria
- fin de programa
Programa-
Dirección | Etiqueta | Instrucción | Comentario |
---|---|---|---|
2000H | LXI H, 2050H | Cargar la dirección inicial de la lista | |
2003H | MOV B, M | Máximo de tienda | |
2004H | MOV C, M | Almacenar mínimo | |
2005H | MVI D, 0AH | Contador para 10 elementos | |
2007H | CÍRCULO | MOV A, M | Recuperar elemento de lista en Acumulador |
2008H | CMP B | Comparar elemento con número máximo | |
2009H | JC MIN | Saltar a MIN si no es máximo | |
200CH | MOV B, A | Transferir contenidos de A a B como A > B | |
200DH | MÍN. | CMP C | Comparar elemento con número mínimo |
200EH | SALTAR JNC | Saltar a SALTAR si no es mínimo | |
2011H | MOV C, A | Transferir contenido de A a C si A < mínimo | |
2012H | SALTAR | INXH | Incrementar la memoria |
2013H | DCR D | Contador de decrementos | |
2014H | BUCLE JNZ | Saltar a LOOP si D > 0 | |
2017H | LXI H, 2060H | Cargar dirección para almacenar máximo | |
201AH | MOV M, B | Mover máximo a 2060H | |
201BH | INXH | Incrementar la memoria | |
201CH | MOV M, C | Mover mínimo a 2061H | |
201DH | HLT | Detener |
Explicación –
- Uno por uno, todos los elementos se comparan con el registro B y C.
- El elemento se compara con el máximo, si es mayor que el máximo, se almacena en el registro B. De lo contrario, se compara con el mínimo y, si es menor que el mínimo, se almacena en el registro C.
- El bucle se ejecuta 10 veces.
- Al final de 10 iteraciones, el máximo y el mínimo se almacenan en 2060H y 2061H respectivamente.