Programa 8085 para buscar un número en una array de n números

Problema: escriba un programa en lenguaje ensamblador en 8085 para buscar un número dado en una array de n números. Si se encuentra el número, almacene F0 en la ubicación de memoria 3051; de lo contrario, almacene 0F en 3051.

Suposiciones: el recuento de elementos en una array se almacena en la ubicación de memoria 2050. La array se almacena desde la dirección de memoria inicial 2051 y el número que el usuario desea buscar se almacena en la ubicación de memoria 3050.

Ejemplos –


Algoritmo –

  1. Haga que el puntero de memoria apunte a la ubicación de memoria 2050 con la ayuda de la instrucción LXI H 2050
  2. Almacene el valor del tamaño de la array en el registro C
  3. Número de tienda a buscar en el registro B
  4. Incremente el puntero de memoria en 1 para que apunte al siguiente índice de array
  5. Almacene el elemento de la array en el acumulador A y compárelo con el valor de B
  6. Si ambos son iguales, es decir, si ZF = 1, almacene F0 en A y almacene el resultado en la ubicación de memoria 3051 y vaya al paso 9
  7. De lo contrario, almacene 0F en A y guárdelo en la ubicación de memoria 3051
  8. Disminuya C en 01 y verifique si C no es igual a cero, es decir, ZF = 0, si es cierto, vaya al paso 3; de lo contrario, vaya al paso 9
  9. fin de programa

Programa –

DIRECCIÓN DE MEMORIA MNEMOTÉCNICA COMENTARIO
2000 LXI H 2050 Alto <- 20, Largo <- 50
2003 MOV C, M C <- M
2004 LDA 3050 A <- M[3050]
2007 MOV B, A B <- A
2008 INXH HL <- HL + 0001
2009 MOV A, M A <-M
200A CMP B A-B
200B JNZ 2014 Saltar si ZF = 0
200E MVI A F0 A <- F0
2010 STA 3051 M[3051] <- A
2013 HLT FINAL
2014 MVI A 0F A <- 0F
2016 STA 3051 M[3051] <- A
2019 DCR C C <- C – 01
201A JNZ 2008 Saltar si ZF = 0
201D HLT FINAL

Explicación – Registros utilizados A, B, C, H, L y memoria indirecta M:

  1. LXI H 2050 – inicialice el registro H con 20 y el registro L con 50
  2. MOV C, M: asigna el contenido de la ubicación de memoria indirecta, M, que está representado por los registros H y L al registro C
  3. LDA 3050: carga el contenido de la ubicación de memoria 3050 en el acumulador A
  4. MOV B, A – mueve el contenido de A en el registro B
  5. INX H: incrementa HL en 1, es decir, M se incrementa en 1 y ahora M apuntará a la siguiente ubicación de memoria
  6. MOV A, M: mueve el contenido de la ubicación de memoria M en el acumulador A
  7. CMP B: resta B de A y actualiza las banderas de 8085
  8. JNZ 2014: salta a la ubicación de memoria 2014 si se restablece el indicador cero, es decir, ZF = 0
  9. MVI A F0 – asignar F0 a A
  10. STA 3051: almacena el valor de A en 3051
  11. HLT: deja de ejecutar el programa y detiene cualquier ejecución adicional
  12. MVI A 0F – asignar 0F a A
  13. STA 3051: almacena el valor de A en 3051
  14. DCR C – decrementar C en 01
  15. JNZ 2008: salta a la ubicación de memoria 2008 si se restablece el indicador cero
  16. HLT: deja de ejecutar el programa y detiene cualquier ejecución adicional

Publicación traducida automáticamente

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