所以这个程序应该找到数组中最大的数字" 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