.data
array:
.word 5, 2, 6, 1, 4, 8 @ 数组
.equ array_len, 6 @ 数组长度
.text
.globl main
.type main, %function
main:
ldr r0, =array @ r0 = &array[0]
mov r1, array_len @ r1 = array_len
bl max_in_array @ 调用max_in_array函数
mov r2, r0 @ 把最大值存入r2中
mov r7, #1 @ 操作完成,退出程序
max_in_array:
push {r4, lr}
mov r3, #0 @ r3 = max = 0
loop:
cmp r1, #0 @ 如果表项个数为0
beq end_loop @ 调用前,退出循环
ldr r4, [r0], #4
cmp r4, r3 @ 比较数值
bgt update_max
subs r1, r1, #1
b loop
update_max:
mov r3, r4 @ 更新最大值
subs r1, r1, #1
b loop
end_loop:
mov r0, r3 @ 把最大值的值存入r0
pop {r4, pc}
.size max_in_array, .-max_in_array @ 获取函数大小
解释: 上述代码中,首先定义了一个包含6个整数的数组,并使用 .word 命令将整数存储在数据段中。然后,将数组的长度存储在一个 define 中。在 main 函数中,将数组的地址存储在 r0 中并将数组的长度存储在 r1
下一篇:ARM汇编-BLT指令