ARM中的对称差异

时间:2016-01-04 13:22:31

标签: arm

我正在尝试在ARM上创建一个程序,找到两个集合之间的对称差异并将其存储在一个单独的集合中,我不确定我做错了什么,有人可以帮忙吗? 这就是我所拥有的:

start

    LDR R0, = ASize     ;load number of elements in A
    LDR R0, [R0]        
    LDR R1, = BSize     ;load number of elements in B
    LDR R1, [R1]        
    LDR R2, = CSize     ;load number of elements in C
    LDR R2, [R2]        
    LDR R3, = AElems    ;load elements in A
    LDR R4, = BElems    ;load elements in B
    LDR R5, = CElems    ;load elements in C
    LDR R8, = '?'

while

    CMP R0,#0
    BEQ endwh

while2

    CMP R1,#0
    BEQ endwh   
    LDR R6, [R3]
    LDR R7, [R4]
    CMP R6,R7
    BEQ endwh
    STR R7, [R5]
    ADD R2,R2,#1
    ADD R4,R4,#4
    STR R8, [R4]
    SUB R1,R1,#1

    B   while
    STR R6, [R5]    
    ADD R2,R2,#1
    STR R8, [R3]
    SUB R0,R0,#1
    ADD R3,R3,#4
    B   while2

endwh

stop    B   stop

1 个答案:

答案 0 :(得分:0)

我设法弄清楚感谢你的帮助! 这是我提出的解决方案

start
   LDR R0, = ASize
   LDR R0, [R0]
   LDR R1, = BSize
   LDR R1, [R1]
   LDR R2, = CSize
   LDR R2, [R2]
   LDR R3, = AElems
   LDR R4, = BElems
   LDR R5, = CElems
   LDR R8, = '?'

while
  CMP R0,#0
  BEQ endwh1
  LDR R6, [R3]
  LDR R7, [R4]
  CMP R6,R7
  BNE endwh2
  STR R8, [R3]
  STR R8, [R4]
  ADD R3,R3,#4
  SUB R0,R0,#1
  B   while
endwh2
  CMP R1,#0
  BEQ endwh3
  ADD R4,R4,#4
  SUB R1,R1,#1 
  B     while
endwh3
  STR R6,   [R5]
  ADD R5,R5,#4
  ADD R2,R2,#1
  ADD R3,R3,#4
  SUB R0,R0,#1
  LDR R4, = BElems
  LDR R1, = BSize
  LDR R1, [R1]
  B   while
endwh1
while2
  CMP R1,#0
  BEQ endwh
  LDR R7, [R4]
  CMP R7,#'?'
  BEQ endwh4
  STR R7, [R5]
  ADD R2,R2,#1
  ADD R5,R5,#4
  ADD R4,R4,#4
  SUB R1,R1,#1
  B   while2
endwh4
  ADD R4,R4,#4
  SUB R1,R1,#1
  B     while2
endwh
stop  B   stop