打印

请教,IAR中汇编的使用。。。。

[复制链接]
1712|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
javenreal|  楼主 | 2011-8-11 09:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假设在C中定义了一个全局数组:
int test[128];

现在需要写一个汇编函数,函数中需要对test中的从第x个起的n个成员加1.

C语言的函数如下:
void MyAdd(int *p, int count)
{
     for(int i=0; i<count; i++)
          p[i] += 1;
}

请各位高手给出一个汇编语言实现上述功能的函数?:)
沙发
javenreal|  楼主 | 2011-8-11 09:58 | 只看该作者
目前已经实现2个数相加,但是涉及到地址,有些搞不懂。

2个数相加的代码如下:
在头文件中申明:u32 __SADD(u32 i1, u32 i2);
在S文件中实现:
__SADD

  ADD r0, r1
  BX r14

r0中保存结果,就是函数的返回值

使用特权

评论回复
板凳
javenreal|  楼主 | 2011-8-11 10:10 | 只看该作者
传入地址,对该地址处的数字加1,并将结果保存到原地址,可以用如下代码实现:
  LDR r3, [r0]
  ADDS r3, #1
  STR r3, [r0]
  BX r14
感觉加一个数就要3条指令,是不是没有效率呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

48

帖子

1

粉丝