满意答案
foy23q
2018.11.16
采纳率:59% 等级:9
已帮助:3714人
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 " B LOOP\n" //若不相等 跳转至LOOP处进入下次循环 else continue "END:\n" "MOV %0 , R1\n" //sum = R1 :"=r"(sum)//输出 :"r"(val)//输入 :"memory" ); return sum; } 随便写了个求和的例子 其余的循环大同小异 不懂可以继续探讨 运行之前请交叉编译然后在ARM平台上运行追问: 大神,你写的有点乱,我这个初学者看的头皮发麻啊
00分享举报