- 1、本文档共74页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章80C51的汇编语言与程序设计
* * 3、定义字节数据表伪指令DB 1000H [标号:] DB 字节数据表 如: ORG 1000H DB -2,-4,-6,8,10,18 FEH FCH FAH 08H 0AH 12H 1001H 用的较多 4、定义位地址为符号名伪指令BIT 符号名 BIT 位地址表达式 如: ST BIT P1.0 ;将P1.0的位地址赋给符号名ST CF BIT 0D7H ;将位地址为D7H的位定义为符号名 初学用的较少 * * 5、定义常值为符号名伪指令EQU 符号名 EQU 常值表达式 LEN EQU 10 SUM EQU 21H BLOCK EQU 22H CLR A MOV R7,#LEN MOV R0,#BLOCK LOOP:ADD A,@R0 INC R0 DJNZ R7,LOOP MOV SUM,A 符号名为: 地址 常数 段名 字符串 寄存器名 位名 初学用的较少 * * 单片机应用系统由硬件系统和软件程序构成 汇编语言 高级语言 软件程序设计方法 汇编语言是用语言直接控制硬件,由硬件间接达到某种控制效果。而C语言是一种比较高级的语言,编写者可以不用去考虑硬件而直接去命令计算机达到这种控制效果。换而言之,汇编语言注重描述过程,C语言之类的高级语言更注重描述结果。 3.3 汇编语言的编程方法 * * C-51与ASM-51相比,有如下优点: 1.??对单片机的指令系统不要求了解,仅要求对8051 的存储器结构有初步了解; 2.??寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理; 3.??程序有规范的结构,可分成不同的函数,这种方式可使程序结构化; 4.??提供的库包含许多标准子程序,具有较强的数据处理能力; 5.??由于具有方便的模块化编程技术,使已编好程序可容易地移植; * * ASM-51与C-51相比,有如下优点: 能够直接操作与硬件相关的存储器或I/O端口; 能够不受编译器的限制,对生成的二进制代码进行完全的控制;能够对关键代码进行更准确的控制;能够根据特定的应用对代码做最佳的优化,提高运行速度;能够最大限度地发挥硬件的功能;用汇编语言编写的程序比用高级语言编写的程序所要求的存储空间与执行时间将显著减少;汇编语言使程序员可以完成技术性非常强的任务;而使用高级语言,即使可能做到,恐怕也会非常困难;虽然大多数软件专家是用高级语言开发新的应用软件的(那样做,程序会比较容易编写的维护),但是对于执行时间要求比较苛刻的部分,常常还要用汇编语言来重新编写; 常驻程序(当其他程序运行的时候,常驻在存储器中的程序)和中断服务例行程序(处理输入与输出的程序)几乎都是用汇编语言开发的。 * * 总而言之 汇编语言,生成的目标程序占内存空间少、运行速度快,具有效率高、实时性强。 高级语言,对系统的功能描述与实现简单,程序阅读、修改和移植方便,适合于编写复杂的程序。 * * 3.3.1 程序编制的步骤 功能要求、技术指标、具体的算法 任务分析,确定算法或思路 流程描述 流程图符号 “超级循环”框架 * * 编定程序、强化程序模块化观念 检查语法错误并修改,比较容易 检查逻辑错误并修改,稍难 检查隐藏的错误并修改,提高稳定性和可靠性,很难! 程序模块(主程序模块、各种子程序模块) 模块化优点:分块设计、便于阅读、调试方便 调试与修改 * * 3.3.2 程序设计 Keil软件的使用 Proteus软件的使用 * * 3.3.3 单片机汇编程序设计举例 流水灯电路的设计 数码管静态显示电路的设计 数码管动态显示电路的设计 独立按键电路的设计 矩阵按键电路的设计 串口通信电路的设计 时钟显示电路的设计 * * (40H)=23H,(50H)=45H MOV SP,#6FH PUSH 40H PUSH 50H POP 50H POP 40H ;(SP)=6FH ;(SP)=70H,(70H)=(40H)= 23H 结论:地址40H和50H中数据入栈前和出栈后数据保持 一致,遵循“先进后出”的原则。这是正常使用。 ;(SP)=71H,(71H)=(50H)= 45H ;(40H)=(70H)=23H,(SP)= 6FH ;(50H)=(71H)=45H,(SP)= 70H * * 字节交换指令XCH 数据交换指令XCH、XCHD和SWAP 数据交换属于同时进行的双向传送 【例3-20】若(R0)=80H,(A)=20H。 执行指令 XCH A,R0 后,(A)=?
文档评论(0)