Programa 8085 para encontrar el elemento que aparece una vez

Requisito previo: encuentre el elemento que aparece una vez en una array donde todos los demás elementos aparecen dos veces
Problema: dados 11 números, escriba un programa en lenguaje ensamblador para encontrar el elemento que aparece una vez donde 5 números aparecen dos veces y un elemento aparece una vez.

Ejemplos:

Input : [01H, 02H, 09H, 01H, 01H, 02H, 0AH, 01H, 09H, 03H, 03H]
Output : 0AH
Every number appears even number of times, except 0AH which appears only once.

Algoritmo:
Usa XOR.
XOR de todos los elementos dará el número que aparece una vez. Esto se debe a que el XOR de un número consigo mismo es 0 y el XOR de un número con 0 es el mismo número.

^ => XOR

res = 01H ^ 02H ^ 09H ^ 01H ^ 01H ^ 02H ^ 0AH ^ 01H ^ 09H ^ 03H ^ 03H

Since XOR is associative and commutative :
res = 0AH ^ (01H ^ 01H) ^ (01H ^ 01H) ^ (02H ^ 02H) ^ (03H ^ 03H) ^ (09H ^ 09H) 
    = 0AH ^ 0 ^ 0 ^ 0 ^ 0 ^ 0
    = 0AH ^ 0
    = 0AH

Pasos:

  1. Cargue la dirección del primer número en el par de registros HL
  2. Inicialice el registro C con 0BH porque tenemos que recorrer 11 elementos. Actúa como un contador
  3. Inicializar el acumulador con 0
  4. Tome XOR del valor presente en la dirección almacenada en el registro HL con el acumulador e incremente la dirección en el registro HL
  5. Repita el paso 4 para el resto de los 10 elementos.
  6. Almacene el valor del acumulador en 201DH (arbitrario)

201DH contiene la respuesta.

DIRECCIÓN ETIQUETA MNEMOTÉCNICO
2000H LXIH, 2012H
2001H
2002H
2003H MVI A, 00H
2004H
2005H MVI C, 0BH
2006H
2007H CÍRCULO MOV B, M
2008H XRA B
2009H INXH
200AH DCR C
200BH BUCLE JNZ
200CH
200DH
200EH STA 201DH
200FH
2010H
2011H HLT

Publicación traducida automáticamente

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