- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第4章80C51的汇编语言程序设计4.1程序编制的方法和技巧4.2源程序的编辑和汇编4.3基本程序结构4.4子程序及其调用4.5简单I/O设备的并口直接驱动示例
单片机应用系统由硬件系统和应用程序构成应用程序设计方法高汇编语言,生成的目标程序占内存空间少、运行速度快,具有效率高、实时性强。高级语言,对系统的功能描述与实现简单,程序阅读、修改和移植方便,适合于编写复杂的程序。
4.1程序编制的方法和技巧4.1.1程序编制的步骤任务分析明确任:功能要求、技指运行境研算法设计将化算机理的程序算法算法比与化(内存需求与运行速度)
流程描述“超循”框架流程图符号
4.1.2程序编制的方法和技巧强化模块观念程序模块(主程序模块、各种子程序模块)模块化优点:分块设计、便于阅读、调试方便采用循环和子程序使程序占用空间减少、结构清晰循环初值和结束条件,避免“死机”现象子程序的现场保护(注意栈平衡、寄存器内容)中断子程序有注意保PSW的内容
4.1.3汇编语言的语句格式Keil的器A51可以句形式:[标号:]指令助记符[操作数1,][操作数2,][操作数3,][;注释]标号(即符号地址)非数字字符开头,后跟字母、数字、“-”、“?”等不能用已定义的保留字(指令助记符、伪指令等)后跟英文冒号“:”指令助记符是指令功能的英文写。
操作数数据:二进制(B)十进制(D或省略D)十六进制(H),注意A~F开头时要加“0”ASCII码,如‘A’,‘1245’符号:符号名、标号或“$”(PC的当前值)表达式:由运算符和数据构成(见表4.1)注释英文分号“;”开
表4.1先运算符功能表达式及其果示例()括号4*(5+6)即44NOT、HIGH、取反、取高字节、取低NOT55H即AAH;LOW字节HIGH1234H即12H高↓+、-正号、负号+5、-6↓↓乘、除(取商)、取余数*、/、MOD17/5即3;17MOD5即2↓↓↓↓+、-加、减5+4即9;5-4=即12SHL2即8;8SHR2即245HAND0FH即05HSHL、SHR左移、右移与、或、异或低·AND、OR、XORMOVA,X8;若X8为真,则为MOVA,01H若X8为假,则为MOVA,00H、、=、、=、=比较运算符
4.2源程序的编辑和汇编目程序的生程如下:
4.2.1源程序的编辑和汇编源程序的编辑依据汇编语言规则用好伪指令ORG0000HLJMPMAINORG0040HMAIN:MOVR7,#16MOVR0,#60HMOVA,#55HLOOP:MOV@R0,AINCR0符号不用中文SJMP$用于调试以.ASM存盘DJNZR7,LOOPSJMP$END
源程序的汇编汇编源程序转为目标程序的过程叫汇编汇编通常在Windows下的集成开发环境完成用A51.EXE汇编生成.OBJ、.LIB及.LST目标程序的连接.OBJ、.LIB经BL51.EXE生成无扩展名的绝对地址目标文件绝对地址目标文件可以用于仿真器调试调试无误的目标文件用OH51.EXE转换为.HEX文件.HEX文件经编程器写入单片机存储器
4.2.2伪指令伪指令,也叫汇编命令。仅对汇编过程进行指示伪指令无对应的单片机可执行代码起始地址设定伪指令ORGORG表达式ORG8000H表达式通常十六制地址,例:ORG可多次使用,但地址的序要由小到大……START:MOVA,#30H结束汇编伪指令ENDEND指令位于源程序的最后一行。
定义字节数据表伪指令DB1000HFEH1001HFCHFAH08H0AH12H[标号:]DB字节数据表如:ORG1000HDB-2,-4,-6,8,10,18定义字数据表伪指令DW[标号:]DW字数据表1400H32H1401H1402H大端模式4AH00HORG1400HDATA1:DW324AH,3CH……1403H3CH
定义常值为符号名伪指令EQU符号名EQU常值表达式LENEQU10符号名为:地址SUMEQU21HBLOCKEQU22HCLRA常数段名MOVR7,#LENMOVR0,#BLOCKLOOP:ADDA,@R0字符串寄存器名位名INCR0DJNZR7,LOOPMOVSUM,A比较:标号只能是地址
定义位地址为符号名伪指令BIT符号名BIT位地址表达式如:STBITP1.0;将P1.0的位地址赋给符号名STCFBIT0D7H;将位地址为D7H的位定义为符号名用BIT定义的“符号名”一经定义便不能重新定义和改变其它一些伪指令参见教材表4.2
4.3基本程序结构一般不影响标志寄存器PSW的状态。传送类指
文档评论(0)