用ARM汇编怎么实现c语言中的for循环

如题所述

反汇编是机器编译出来的东西,有必要分析那个么?
如果你想分析,使用ADS就能看到反汇编了
写个例子给你吧
假设要实现循环累加1+2+3+4+5+.....+100
你要循环101次也就是从0到100
MOV r0,#100;定义循环次数101次
MOV r1 , #0;初始化保存结果的寄存器
MOV r2 , #1;
loop
ADD r1,r1,r2;
ADD r2,r2,#1;
SUBS r0,r0,#1;
BNE loop
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-02-01
反汇编是机器编译出来的东西,有必要分析那个么?
如果你想分析,使用ADS就能看到反汇编了
写个例子给你吧
假设要实现循环累加1+2+3+4+5+.....+100
你要循环101次也就是从0到100
MOV r0,#100;定义循环次数101次
MOV r1 , #0;初始化保存结果的寄存器
MOV r2 , #1;
loop
ADD r1,r1,r2;
ADD r2,r2,#1;
SUBS r0,r0,#1;
BNE loop
第2个回答  2012-06-02
这个很简单的啊!!用
b 这条指令,跳转到你想呀的地方!后面可以加上跳转条件!
第3个回答  2012-06-05
keil 在debug 时能看到转换好的汇编,这样你就可以看到汇编是怎么实现for循环了

参考资料:http://zhidao.baidu.com/question/95108604.html

arm 汇编高手进! 使用arm汇编指令 实现for循环结构
1,使用arm汇编指令 实现for循环结构2, while呢?3, do...while呢?4. switch 呢?麻烦高手指教下哈。最好给出具体的汇编指令!hymwrj | 浏览2612 次 |举报 我有更好的答案推荐于2017-12-16 12:46:11 最佳答案 int GetSum(int val) \/\/使用汇编求1+2+3+...+val的值{ int sum = 0; __asm__ _...

汇编语言是怎么调用c语言的程序的?
1、 C程序调用汇编程序 汇编程序的设计要遵守ATPCS(ARM—Thumb Procedure Call Standard),保证程序调用时参数的正确传递。在汇编程序中使用EXPORT 伪操作声明本程序,使得本程序可以被别的程序调用。在C程序使用extern声明该汇编程序。下面是一个C程序调用汇编程序的例子。其中汇编程序strcopy实现字符串复制功能...

如何用8086指令实现do while功能
while 循环结构。while循环结构先判断条件,然后才执行,用ARM汇编语言实现就是先判断条件,不符合则跳转,符合则执行,最后循环,如:C语言 ARM汇编语言 while(a=b){ 执行体;} Loop CMP R0,R1 BNE Exit ;执行体 B Loop Exit ;其他指令块 使用 ARM 汇编指令实现 do…while 循环结构。do-while...

ARM单片机可以用汇编语言编程吗
ARM单片机程序可以用汇编语言进行编写。除去协处理器(高级的arm单片机才具有)的指令,常用的指令大致为MSR、MRS、LDR、STR、LDM、STM,ORR、BIC,TEST, ADD, SUB,MUL等指令。如果说想写一写汇编代码玩一下的话还行。原则上能用C语言则一定不会使用汇编。例如UBOOT的引导代码,linux内核的启动代码都...

大家来帮我看看这个ARM 汇编程序,我不懂
code16doAdd 跳回刚才地址的前一个地址doAdd,其实程序是从这里才正式分支的,而且这段程序是Thumb程序,从这里才正式执行分支;bx lr 返回分支程序;翻译成C语言,大概是这个意思 void fun2(void){ } void fun1(void){ fun2();\/\/刚才我解释的那堆话,就相当于调用了一个空的函数 } ...

arm汇编跟汇编、C语言的区别
C语言ARM的和x86的差不多,除了对硬件寄存器操作不同,其它语法和流程都一样。回答补充:arm汇编程序每一行是指定arm core执行一条指令,每条指令都是硬件相关。如 LDR R3,1 ;用LDR指令将数值1放入R3寄存器准备参与运算 C语言与arm指令无关,只与逻辑运算有关,指定硬件地址的操作才与硬件相关;如果用...

ARM的启动代码为什么要用汇编语言
因为C语言执行之前,需要先设置好堆栈指针。说以只有先用汇编,设置了堆栈指针之后才能调用C函数,这样C函数才能执行。

如何使用arm汇编指令实现结构化编程
l 所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通用寄存器来完成.因此代码中大量看到LDR,STR指令来传送值.l ARM汇编语句中.当前语句很多时候要隐含的使用上一句的执行结果.而且上一句的执行结果,是放在CPSR...

ARM如何实现汇编程序嵌套
第一个实验是关于嵌入式编程的,这个实验目的一方面是为了让我们熟悉ARM下编程的编译环境ADS和调试器ATX,另一方面是让我们掌握如何将c语言和汇编语言在实际编程中相互调用。经过这两天靠自己不断的摸索,终于掌握了如何在编译环境中进行ARM编程,另外,还学会了在c中调用汇编程序的方法,以及如何通过linux...

使用Keil开发ARM编程问题,请编程高手指点一下:为什么用了一条#if(1...
在C语言中,我们开发过程中,如果让某一段代码不执行,我们用两种办法,一种是用“\/\/"或者“\/**\/"屏蔽掉,另一种,就是用#if 0。。。#endif方法来关闭,一般来说,老手都用后者,当调试完成后,会修改回#if(1),让代码回归在正常状态下。所以,你这里的#if(1)应该是调试过的,之后又修改回...

相似回答