版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
现在做单片机开发,可能很少看到有直接用汇编做项目了,但单片机的启动文件、RTOS底层等一些地方,依然还有汇编代码的身影。不知道大家有没有学过汇编,或者有没有用汇编语言编过程?学习汇编语言我在2010年学习单片机编程的时候,老师教学都还是用汇编教我们,包括教学实验,也是要求我们用汇编写程序。MOVA,#00HMOVP1,A我记得那会儿,老师要求我们把汇编指令背下来。虽然现在很多汇编指令写不出来了,但看到很多汇编代码,还是基本明白它的意思。以前计算机三级(PC技术)的上机考试,就是用汇编编程,我那个时候上机考试还是满分。当时觉得自己很牛逼,现在看来就是一菜鸟图片汇编转C语言刚开始学习汇编那会儿,我真的用汇编在51单片机上写流水灯程序。后面看了用C语言写流水灯程序,突然发现,哇,用C语言写程序还能这么简单、方便。于是,我就那个时候开始放弃了汇编,转向了C语言。包括后面我在大学实验室自己学习、DIY做东西、以及后面的全国大学生电子设计竞赛,都是用C语言编写的程序。10行汇编程序,可能只需要一行C语言代码就能实现,这是C语言相比汇编简化的优点。但是,C语言编写的程序,经过编译,也会转为汇编。比如我们在线调试代码的时候,会看到类似的“汇编窗口”:图片因为以前单片机的运行速度不高,且内存和Flash容量不大,要求节约程序空间。所以使用汇编的优点:代码运行效率更高、更节约代码存储空间。对比汇编和C语言点灯程序汇编语言写程序的主要缺点:语法复杂、可读性差等。下面分享一个实例:51单片机上的流水灯程序。分别用C语言和汇编写出来,大家对比一下就知道了。C语言版:/********************宏定义**************************/#defineMAIN_Fosc22118400L//定义主时钟/********************延时函数**************************/voiddelay_ms(u8ms){u16i;do{i=MAIN_Fosc/13000;while(--i);//14Tperloop}while(--ms);}/********************主函数**************************/voidmain(void){P0M1=0;P0M0=0;//设置为准双向口P1M1=0;P1M0=0;//设置为准双向口P2M1=0;P2M0=0;//设置为准双向口P3M1=0;P3M0=0;//设置为准双向口P4M1=0;P4M0=0;//设置为准双向口P5M1=0;P5M0=0;//设置为准双向口P6M1=0;P6M0=0;//设置为准双向口P7M1=0;P7M0=0;//设置为准双向口while(1){P17=0;delay_ms(250);delay_ms(250);P17=1;P16=0;delay_ms(250);delay_ms(250);P16=1;P47=0;delay_ms(250);delay_ms(250);P47=1;P46=0;delay_ms(250);delay_ms(250);P46=1;}}汇编语言版:;********************宏定义**************************/Fosc_KHZEQU22118;22118KHZSTACK_POIRTEREQU0D0H;堆栈开始地质;********************延时函数**************************/F_delay_ms:PUSH02H;入栈R2PUSH03H;入栈R3PUSH04H;入栈R4MOVR2,AL_delay_ms_1:MOVR3,#HIGH(Fosc_KHZ/13)MOVR4,#LOW(Fosc_KHZ/13)L_delay_ms_2:MOVA,R4;1TTotal13T/loopDECR4;2TJNZL_delay_ms_3;4TDECR3L_delay_ms_3:DECA;1TORLA,R3;1TJNZL_delay_ms_2;4TDJNZR2,L_delay_ms_1POP04H;出栈R2POP03H;出栈R3POP02H;出栈R4RET;********************主程序**************************/ORG0100H;resetF_Main:CLRAMOVP0M1,A;设置为准双向口MOVP0M0,AMOVP1M1,A;设置为准双向口MOVP1M0,AMOVP2M1,A;设置为准双向口MOVP2M0,AMOVP3M1,A;设置为准双向口MOVP3M0,AMOVP4M1,A;设置为准双向口MOVP4M0,AMOVP5M1,A;设置为准双向口MOVP5M0,AMOVP6M1,A;设置为准双向口MOVP6M0,AMOVP7M1,A;设置为准双向口MOVP7M0,AMOVSP,#STACK_POIRTERMOVPSW,#0;选择第0组R0~R7L_MainLoop:CLRP1.7MOVA,#250LCALLF_delay_ms;延时250msLCALLF_delay_ms;延时250msSETBP1.7CLRP1.6MOVA,#250LCALLF_delay_ms;延时250msLCALLF_delay_ms;延时250msSETBP1.6CLRP4.7MOVA,#250LCALLF_delay_ms;延时250msLCALLF_delay_ms;延时250msSETBP4.7CLRP4.6MOVA,#250LCALLF_delay_ms;延时250msLCALLF_delay_ms;延时250msSETBP4.6SJMPL_MainLoop上面两个程序,实现的功能都一样(流水灯),但对比代码,大家发现有啥区别?对于有汇编基础的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国环保束线带行业投资前景及策略咨询研究报告
- 2024至2030年中国浮水背心数据监测研究报告
- 2024至2030年中国极薄壁不锈钢焊管行业投资前景及策略咨询研究报告
- 2024至2030年中国强嗅抗失水药剂数据监测研究报告
- 2024至2030年中国塑胶弹簧公仔行业投资前景及策略咨询研究报告
- 四川省2024-2025学年高二上学期期中调研测试数学试题
- 九年级家长会课件
- 吉林省白山市(2024年-2025年小学五年级语文)统编版竞赛题((上下)学期)试卷及答案
- 西藏林芝地区(2024年-2025年小学五年级语文)人教版小升初真题(下学期)试卷及答案
- 月付合同模板
- 中小学德育工作指南考核试题及答案
- 中国古代文学史之先秦文学课件
- 宁夏朝觐活动传染病防控工作方案
- 舌战群儒 剧本台词
- 【信息技术 】计算机系统互联(第一课时)课件 2022-2023学年教科版(2019)高中信息技术必修2
- 300t双柱油压机拆装方案
- 中国湿疹诊疗指南
- GB/T 6163-2011调频广播接收机测量方法
- GB/T 6003.1-2012试验筛技术要求和检验第1部分:金属丝编织网试验筛
- GB/T 13459-2008劳动防护服防寒保暖要求
- GB/T 1231-1991钢结构用高强度大六角头螺拴、大六角螺母、垫圈技术条件
评论
0/150
提交评论