新闻中心

EEPW首页>模拟技术>设计应用> S3C825A型单片机结构及软件设计

S3C825A型单片机结构及软件设计

作者: 时间:2012-03-29 来源:网络 收藏

  函数返回值可根据其类型放在R15或R15:R14寄存器对中。若返回值是struct或union类型,则返回R15中的值是存放返回结果的堆栈指针起始位置。

  C语言编译器也是编译中断函数时会自动保护所用到的寄存器(包括R10-R15),状态寄存器FLAGS的保护也是在中断处理过程中自动完成的。中断过程中用到的寄存器都使用PUSH Rn的指令进行保护,而采用POP Rn指令恢复。当用IRET指令自动恢复状态寄存器FLAGS时,可以从中断中返回。

  3.2 对汇编语言函数的约定

  对于一个可以被C语言函数调用的汇编程序来说,使用时必须满足以下3点:

  1)符合C语言参数传递规则;

  2)有PUBLIC函数入口标志;

  3)在C语言函数中用extern声音为外部函数。

  参加传递规则和C语言函数一样,所不同的是,要在汇编语言函数编写过程中具体体现出来。

  4 应用实例

  明确了以上调用规则,混合编程就比较容易了,归纳起来有以下几点:

  1)在C语言源文件中用“extern”关键字导入被汇编语言源文件导出的标号;

  2)在汇编语言源文件用“PUBLIC”关键字把标号导出到C语言源文件;

  3)在汇编语言中用“EXTERN”关键字导入被C语言函数源文件导出的关键字;

  4)用C语言把标号导出给汇编语言,这一步不需要关键字;

  5)把编辑好的C语言和汇编语言源文件导入设计系统,并用各自调用函数的指令调用。

  下面以笔者在校音器设计中用到的2个例子来具体说明。

  4.1 C语言和汇编语言相互调用

  在该例中,用C语言函数main()调用汇编语言函数get_rand()以得到一个随机数,接着,用汇编语言函数get_rand()调用C语言库函数rand()再得到一个整型机随机数,然后用调用C语言函数mult()的方法把这个随机值的高位乘以main()函数传递给自己的实参,同时把乘积值返回给main()参数。



关键词:S3C825A单片机结构

评论


相关推荐

技术专区

关闭