大会程序重新开始?

时间:2015-01-19 06:32:44

标签: assembly arm

所以这个程序应该找到数组中最大的数字" TABLE"。它做得非常好。最后,它必须将最高的数字写入变量" MAX"它在" MAX_INDEX"中的索引。问题在于最后4行:当我到达str r2,[r0]时,它只返回到第一行,而不是简单地将结束值写入变量MAX。为什么呢?

                  .text

TABLE:           .hword 1, 5, -1, 8, -130, 1024, 10, 64, -80, 256 
TABLE_SIZE:      .byte 10
MAX:              
MAX_INDEX:        

                  .align 
                  .global __start

__start:          
                  adr r0, TABLE_SIZE
                  ldrb r5, [r0]
                  adr r0, TABLE

                  mov r1, #-1
                  mov r2, #0

READ:             ldrsh r4, [r0]
                  add r0, r0, #2
                  add r1, r1, #1
                  cmp r4, r2
                  bgt INDEX

                  cmp r1, r5
                  bne READ
                  cmp r1, r5
                  beq END

INDEX:            movs r2, r4
                  mov r3, r1

                  cmp r1, r5
                  bne READ

END:              adr r0, MAX
                  str r2, [r0]
                  adr r0, MAX_INDEX
                  str r3, [r0] 

__end:    b __end

0 个答案:

没有答案