2015-01-14 38 views
1

我在ARM上的一个dcd表中有一组整数。他们都出现偶数次,但我试图得到只出现一次的唯一号码。以下是我在ARM的算法。ARM汇编代码查找表中未配对的值

; I understand why it doesn't work obviously, but I just can't figure out better code 
 

 
     AREA ExOdd1, CODE 
 
\t \t ENTRY 
 
\t \t 
 
\t \t LDR r1, =TABLE1 
 
\t \t MOV r2, #17 
 
\t \t MOV r6, r2 
 
LOOP \t LDR r3, [r1], #4 
 
\t \t B LOOP2 
 
\t \t SUBS r2, r2, #1 
 
\t \t BNE LOOP 
 

 
LOOP2 \t LDR r4, [r1], #4 
 
\t \t CMP r4, r3 
 
\t \t BNE LOOP2 
 
\t \t EOREQ r5, r3, r4 
 
\t \t CMP [r1], #33 
 
\t \t BNE LOOP2 
 

 
STOP \t B STOP 
 

 
TABLE1 \t DCD 10, 5, 10, 2, 5 ,95, 33, 95, 33, 10, 95, 33, 2, 10, 95, 2, 33 
 

 
\t \t END

+0

我们展示你的代码。 –

+0

我的意思是,编辑你的代码到问题中。 –

+0

为什么你不采取所有数字的XOR。这将返回一次出现的号码。 – user7

回答

1
 AREA ExOdd1, CODE 
     ENTRY 

     LDR r1, =TABLE1 
     MOV r2, #17 
LOOP LDR r3, [r1], #4 
     EOR r4, r4, r3 
     SUBS r2, r2, #1 
     BNE LOOP 

STOP B STOP 

TABLE1 DCD 10, 5, 10, 2, 5 ,95, 33, 95, 33, 10, 95, 33, 2, 10, 95, 2, 33 
; the DCD directive just allocates all the 
; needed memory locations for the values 
; listed afterwards 
; each value is stored in the next memory word. 
     END