Problema: escriba un programa en lenguaje ensamblador en un microprocesador 8085 para encontrar un número dado en la lista de 10 números, si lo encuentra, almacene 1 en la salida; de lo contrario, almacene 0 en la salida.
Ejemplo –
Suposición: datos que se encontrarán en 2040H, lista de números de 2050H a 2059H y salida en 2060H.
Algoritmo –
- Cargue el byte de datos que se buscará en el registro B y el contador en el registro D.
- Cargue el elemento inicial en el acumulador.
- Compara Acumulador y registro B.
- Si se establece el indicador cero, salte al punto 8 (ya que la instrucción CMP establece el indicador cero cuando ambos son iguales).
- Registro de decremento D
- Si D>0, tome el siguiente elemento en Acumulador y vaya al punto 3.
- Si D=0, esto significa que no se encontró el elemento, luego almacene 00H. Finaliza el programa.
- Almacene 01H como elemento encontrado. Finaliza el programa.
Programa –
Dirección | Etiqueta | Instrucción | Comentario |
---|---|---|---|
2000H | Datos | LXI H, 2040H | Cargar dirección de datos a buscar |
2003H | MOV B, M | Almacenar datos para ser buscados en el registro B | |
2004H | LXI H, 2050H | Cargar la dirección inicial de la lista | |
2007H | MVI D, 0AH | Contador para 10 elementos | |
2009H | SIGUIENTE | MOV A, M | Recuperar elemento de lista en Acumulador |
200AH | CMP B | Comparar elemento con byte de datos | |
200BH | PARADA JZ | Saltar si se encuentra un byte de datos | |
200EH | INXH | Siguiente elemento de la lista | |
200FH | DCR D | Contador de decrementos | |
2010H | SIGUIENTE | Saltar a SIGUIENTE si D>0 | |
2013H | LXI H, 2060H | Cargar dirección de salida | |
2016H | MVI M, 00H | Tienda 00H | |
2018H | HLT | Detener | |
2019H | DETÉNGASE | LXI H, 2060H | Cargar dirección de salida |
201CH | MVI M, 01H | Tienda 01H | |
201EH | HLT | Detener |
Explicación –
- Uno por uno, todos los elementos se comparan con el byte de datos en el registro B
- Si se encuentra un elemento, el ciclo termina y se almacena 01H
- El bucle se ejecuta 10 veces
- Si al final de 10 iteraciones no se encuentra el byte de datos, se almacena 00H
Consulte el programa Set-1: 8085 para buscar un número en una array de n números