欢迎来到天天文库
浏览记录
ID:15957411
大小:94.00 KB
页数:7页
时间:2018-08-06
《c语言对比汇编的好处》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言对比汇编的好处简单来说,C语言对汇编语言进行了抽象,具有如下优点:·更符合人类思维习惯,开发效率高、时间短。·模块化。·可移植性好。·提供数学函数并支持浮点运算。·程序可读性和可维护性强。C语言当然也有缺点,比如实时性通常要比汇编差。在编写汇编的时候可以清楚的知道每一条指令究竟要多少个机器周期,但是在C中掌控准确的时间稍微困难一些。C51包含ANSIC关键字的同时,也有针对51单片机扩展的一些关键字。C51的扩展关键字从某种程度上体现了C51语言与标准C语言的不同。例如可重入函数、存储模式等等都是标准C中不存在的问题。ANSIC
2、关键字·auto:自动变量·double:双精度类型·int:声明整型类型·struct:声明结构体类型·break:跳出当前循环·else:条件语句否定分支(与if连用)·long:声明长整型类型·switch:用于开关语句?·case:开关语句分支??·enum:声明枚举类型·register:声明寄存器变量·typedef:用以给数据类型取别名(当然还有其他作用)·char:声明字符型类型·extern:声明变量是在其他文件正声明(也可以看做是引用变量)??·return:子程序返回语句(可以带参数,也看不带参数)??·unio
3、n:声明联合数据类型·const:声明只读变量·float:声明浮点型类型·short:声明短整型类型·unsigned:声明无符号类型类型·continue:结束当前循环,开始下一轮循环?·for:一种循环语句(可意会不可言传)·signed:生命有符号类型类型·void:声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)·default:开关语句中的“其他”分支?·goto:无条件跳转语句????·sizeof:计算数据类型长度??·volatile:说明变量在程序执行中可被隐含地改变?·do:循环语句的循环体·whi
4、le:循环语句的循环条件·static:声明静态变量·if:条件语句C51扩展关键字_at_为变量定义存储空间绝对地址alien声明与PL/M51兼容的函数bdata可位寻址的内部RAMbit位类型codeROMcompact使用外部分页RAM的存储模式data直接寻址的内部RAMidata间接寻址的内部RAMinterrupt中断服务函数large使用外部RAM的存储模式pdata分页寻址的外部RAM_priority_RTX51的任务优先级reentrant可重入函数sbit声明可位寻址的特殊功能位sfr8位的特殊功能寄存器sfr
5、1616位的特殊功能寄存器small内部RAM的存储模式_task_实时任务函数using选择工作寄存器组xdata外部RAMC51的运算符与C语言几乎无异(至今没有发现区别)。算术运算符+加,?一元取正?-减,?一元取负?*乘?/除%取模?--自减1?++自加1逻辑运算符&&逻辑与
6、
7、逻辑或!逻辑非关系运算符>大于>=大于等于<小于<=小于等于==等于!=不等于?位运算符号&按位与
8、按位或^按位异或-按位取反>>右移<<左移复合运算符算术运算符与位运算符可以组成符合运算符,例如:+=、-=等等。其它运算符?expr1?expr2:e
9、xpr3sizeof计算字节数*指针操作&求址[]下表运算符->成员访问运算符.成员访问运算符运算符在C51中与标准的C语言并没有什么差异,但是变量却有一些比较关键的区别。变量的数据类型基本变量类型与标准C语言,C51的基本数据类型有char、int、short、long和float。除float外均可以使用signed和unsigned指定有符号型和无符号型,默认情况下都是signed。char占用一个字节,int和short都占2个字节,long占4个字节,float占4个字节。其它数据类型指针类型:指针与标准C中的指针概念相同,
10、指向一个特定的地址(地址存放的可以是变量也可以是函数)。例如:intfunc(inta,intb);int(*pointer)(int,int)=func;其它数据类型:enum、struct、union以及数组。C51专有数据类型:bit、sfr、sfr16以及sbit。bit变量存储在可位寻址区,保存一位二进制数。注:不能用指针指向位变量。sfr和sfr16指的是特殊寄存器变量。sbit声明的是可位寻址变量的一个位。可位寻址的变量就是存储在bdata的变量,以及部分sfr。例如:intbdatabitTest;sbitbit0=b
11、itTest^0;例子中的bit0就是bitTest的第0位。变量的作用域C51的变量分为局部变量和全局变量。变量的存储种类auto:默认register:编译器尽量将变量放在寄存器中。extern:全局变量,可以在多个
此文档下载收益归作者所有