写一段 ARM汇编程序:循环累加队列myarray中的所有元素,直到碰上零值元素,结果放在r4中.

写一段 ARM汇编程序:循环累加队列myarray中的所有元素,直到碰上零值元素,结果放在r4中.,第1张

小族戚学文化不懂啥兆戚陵是循环队列,也不懂C语言。

如果是一定地址之间仔哪循环的数组的话可以参照下我下面写的。

r4貌似要存不了这么大的数啊

汇编器 arm-none-eabi-as

.equ myarray, 0x20000018

.equ duiliechangdu, 40

ldr r0, = myarray

ldr r3, = duiliechangdu

mov r1, r3

mov r2, # 0

mov r4, # 0

dd1:

ldr r2, [r0, r1]

add r4, r4, r2

cmp r2, # 0

beq tiaochuqu

subs r1, # 4

bne dd1

mov r1, r3

b dd1

tiaochuqu:

b tiaochuqu

int GetSum(int val) //使用汇编求1+2+3+...+val的值

{

int sum = 0

__asm__ __volatile__(

"MOV R5 , %1\n"//val放入寄存器r5

"MOV R1 , #0\n" //sum = 0

"MOV R2 , #1\衡森n"伏歼//i = 1

"LOOP:\n"

"ADD R1 , R1 ,R2\n" //sum = sum + i

"ADD R2 , R2 ,#1\n" //缺拦冲i++

" CMP R5 , R2\n" //判断 i 是否等于val if(i==val)

"BEQ END\n" //若相等 跳转至END处 break

"BLOOP\n" //若不相等 跳转至LOOP处进入下次循环 else continue

"END:\n"

"MOV %0 , R1\n" //sum = R1

:"=r"(sum)//输出

:"r"(val)//输入

:"memory"

)

return sum

}

随便写了个求和的例子 其余的循环大同小异 不懂可以继续探讨 运行之前请交叉编译然后在ARM平台上运行


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12409746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存