arm9 c语言,ARM9编程C语言程序设计.ppt

ARM9编程C语言程序设计要点

第3章 ARM编程技术 ARM处理器支持两种语言进行设计,一种是汇编语言(ARM/Thumb),另一种是高级语言(如C/C++语言)。汇编语言的机器代码生成效率很高,但可读性却不强,复杂的程序很难读懂;而高级语言在大多数情况下其机器代码生成效率较差,但可读性和可移植性却比汇编语言强很多,而且还可以嵌入汇编来解决高效性的代码编写问题。 本章的内容主要有: ■ 汇编语言编程技术; ■ C语言编程规范技术; ■ 汇编语言与C/C++语言的混合编程。 3.1 汇编语言 4.3汇编语言与C/C++语言的混合编程 4.4 ARM编程实战 4.5 课后练习(1) 4.5 课后练习(2) 4.5 课后练习(3) 4.5 课后练习(4) 谢谢大家 实战1 用ARM汇编语言和C语言实现软件延时子函数Delay(int n)。 实战2 假设有一串数字{2,4,10,8,14,1,20},用C语言和ARM汇编语言分别实现冒泡排序算法,将这串数字按从小到大顺序排列。 实战3 初始化处理器各个模式下的堆栈。 实战4 输入一个3位数,输出其个位、十位和百位。 实战5 用汇编语言定义加法子程序int SUM(int a, int b),通过C语言调用,实现23+54,并将结果输出到屏幕上。 实战6 用C语言定义加法子程序int SUM(int a, int b),通过汇编语言调用,实现23+54,并将结果保存在地址为0。 实战7 在C语言中访问地址为0值,如果该处的值大于0,就让其等于0;如果小于0,则在原来数值上加1。 实战8 编写C语言函数ReadRegister()和WriterRegister(),分别用于读写ARM处理器内部的寄存器,在主程序中调用这两个函数对CPSR寄存器进行读写。 4.4.1 实战1(1) 实战1 用ARM汇编语言和C语言实现软件延时子函数Delay(int n)。 提示:用汇编语言编写函数Delay(int n)时,注意参数n通过R0寄存器传递。 程序清单4.6 C语言实现软件延时子函数Delay(int n) 程序清单4.7 汇编语言实现软件延时子函数 4.4.1 实战1(2) 程序清单4.7 汇编语言实现软件延时子函数 4.4.2 实战2(1) 实战2 假设有一串数字{2,4,10,8,14,1,20},用C语言和ARM汇编语言分别实现冒泡排序算法,将这串数字按从小到大顺序排列。 提示:冒泡排序是一个非常经典的排序算法,由两个循环结构构成,其算法流程如图4.18所示。图4.18中假设这串数字保存在src指示的内存单元中,数据个数N=7,[A]表示内存单元地址A中的内容。 图4.18 冒泡排序流程图 4.4.2 实战2(2) 图4.18 冒泡排序流程图 4.4.2 实战2(3) 程序清单4.8 C语言冒泡排序算法 4.4.2 实战2(4) 程序清单4.9 汇编语言冒泡排序算法 4.4.3 实战3 实战3 初始化处理器各个模式下的堆栈。 提示:ARM处理器能够工作在7种模式下。不管在哪种模式下工作,处理器运行程序时,无可避免地要使用到堆栈,所以正确设置各个模式下的堆栈,能够保证程序正确执行。 程序清单4.10 初始化各个处理器模式下的堆栈 程序清单4.10 初始化各个处理器模式下的堆栈 4.4.4 实战4(1) 实战4 输入一个3位数,输出其个位、十位和百位。 提示:这个程序最好用C语言编写,因为C语言中提供函数库,支持除法运算;而ARM汇编语言不提供除法指令,需要用户自行开发。 程序清单4.11 打印一个数的百、十、个位数字 4.4.4 实战4(2) 程序清单4.11 打印一个数的百、十、个位数字 4.4.5 实战5(1) 实战5 用汇编语言定义加法子程序int SUM(int a, int b),通过C语言调用,实现23+54,并将结果输出到屏幕上。 提示:此题主要目的是让学习者熟悉C语言中调用汇编子程序。 程序清单4.12 int SUM(int a, int b)汇编程序 4.2.3.4 组织有序的文件结构(2) 其实在组织软件结构时头文件也是相当有用的。公共的(外部可访问的)数据结构定义和函数声明都可以放入头文件(*.h)中,然后用一个定义文件(*.c/*.cpp)实现该头文件声明的函数,其他文件如果想使用头文件中声明的函数,只要使用include头文件即可。假设定义了头文件Key.h,在该头文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值