欢迎来到天天文库
浏览记录
ID:59051242
大小:526.50 KB
页数:35页
时间:2020-10-29
《单片机原理和应用.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、单片机原理与应用汇编程序设计初步1程序在内存中的映象未映射空间函数数据栈~操作系统的代码、数据00000000FFFFFFFF开始执行位置文件头函数1函数n__startupmain()call_maincall_exit堆几乎所有信息都要映射到汇编程序源码中2程序在内存中的映象未映射空间函数数据栈~操作系统的代码、数据00000000FFFFFFFF开始执行位置文件头函数1函数n__startupmain()call_maincall_exit堆CPU运行平台内存模式编译选项……3MASM32汇编初始化指令CPU:支持的指令.386.486.586.586p.686……还可
2、添加.MMX.XMM.SSE……内存模式32位:仅flat调用模式C/STDCALL是否区分大小写头文件库文件451单片机汇编初始化指令51本身无特殊初始化指令需要依据不同芯片、不同编译器,可能需要不同的初始化指令、头文件、库文件编译器/汇编器本身模式设置等芯片厂商特殊设备支持IDE的特殊设置需求5程序分段未映射空间函数数据栈~操作系统的代码、数据00000000FFFFFFFF开始执行位置文件头函数1函数n__startupmain()call_maincall_exit堆一个汇编程序是多个不同功能的程序段拼合而成6程序分段.code;函数.data;全局变量.code..
3、....endMASM分段语法.areaCSEG(CODE);函数.areaDSEG(DATA);全局变量.areaCSEG(CODE)......SDCC分段语法7程序分段常见汇编程序段代码段/CODE/TEXT程序的执行代码/函数数据段/DATA全局变量、常量BSS段:BlockStartedbySymbol未初始化的全局变量堆栈段/STACK线程的堆栈8程序的起始地址设置未映射空间函数数据栈~操作系统的代码、数据00000000FFFFFFFF开始执行位置文件头函数1函数n__startupmain()call_maincall_exit堆9MASM起始地址设置语法.c
4、ode…anyLabel:……endanyLabelend伪指令给出标签,则以标签地址为起始地址end伪指令未给出标签,则该模块没有指定起始地址10MASM32汇编基本框架.386.modelflat.data;全局变量、常量.codestart:……ret;函数endstart1151单片机起始地址设置语法51单片机起始地址固定为0被汇编、连接到地址0的执行代码即为起始代码。第一个模块的第一条指令必须是程序的起始位置。ljmp_main中断入口1……中断入口53字节8字节8字节0000H0003H0023H如果中断服务函数不超过8字节,可直接填入。否则需要ljmp跳转到。1
5、251单片机汇编基本框架.areaDSEG(DATA);全局变量(无常量).areaCSEG(CODE)org0ljmp_mainljmpint_func_1nopnopljmpint_func_2……_main:…………int_func_1:13汇编函数未映射空间函数数据栈~操作系统的代码、数据00000000FFFFFFFF开始执行位置文件头函数1函数n__startupmain()call_maincall_exit堆14汇编函数汇编语言语法层面无函数概念无函数定义语法/语义部分汇编器有函数的语法,但仅仅是提示性语义,非约束性语义,语法本质上仍然没有函数的概念无函数调用
6、语法/语义部分汇编器的语法可以用宏实现类似函数调用语法,但仅仅是宏,语法本质上并无函数调用概念15汇编函数汇编函数(语法)入口任意标签在语法上均可作为汇编函数如可理论上在数据段的标签也可以作为汇编函数入口,但部分汇编/连接器不接受跨段类别的符号解析,会拒绝类似用法汇编函数出口(结束点)汇编语法没有出口的概念语法上汇编函数可并行、嵌套、交叉……16汇编函数良好的汇编函数编程风格单入口、单出口、不嵌套、不交叉尽可能与高级语言函数语法限制靠拢函数头尾添加注释分割视觉上易于阅读、维护函数头适当对齐到需要的地址边界可适当提升性能17汇编函数.code……;--------------
7、-------------------------------------------align4_main:…………ret;---------------------------------------------------------……前后添加通栏的注释制造视觉分割对齐到地址边界(51单片机不需要)尽量只在最后一处出现ret指令18汇编函数函数调用:参数传递汇编语言语法上不存在函数参数的相关内容理论上,汇编函数的参数传递方式可以任意约定实际工程中,通常遵循某种标准约定C/STDCALL/PASC
此文档下载收益归作者所有