- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.1 单片机指令系统概述3.2 寻址方式3.3 数据传送类指令3.4 算术运算类指令3.5 逻辑运算及移位指令3.6 控制转移类指令3.7 子程序调用和返回指令3.8 位操作类指令3.9 汇编程序格式与伪指令习题三 3.1.1 指令、指令系统的概念 指令是计算机内部具有特殊功能的操作命令。3.1.2 单片机指令系统及其指令格式 AT89S52单片机指令系统具有功能强、指令短、执行快等特点,其与MCS-51指令集兼容,共有111条指令。 汇编语言指令有如下格式: [标号:] 操作码助记符 [目的操作数] [, 源操作数] [; 注释] 3.2.1 立即寻址 操作数直接出现在指令中, 紧跟在操作码的后面, 作为指令的一部分与操作码一起存放在程序存储器中, 可以立即得到并执行, 不需要经过别的途径去寻找, 故称为立即寻址。 3.2.2 寄存器寻址 在指令选定的某寄存器中存放或读取操作数, 以完成指令规定的操作, 称为寄存器寻址。3.2.3 寄存器间接寻址 由指令指出某一寄存器的内容作为操作数地址的寻址方法, 称为寄存器间接寻址。 寄存器间接寻址示意图如图3-1所示。 3.2.4 直接寻址 指令中直接给出操作数所在的存储器地址, 以供取数或存数的寻址方式称为直接寻址。 3.2.5 基址寄存器加变址寄存器间接寻址 基址寄存器加变址寄存器间接寻址, 简称变址寻址。例如: MOVCA, @A+DPTR指令中的源操作数就是这种寻址方式。该指令寻址及操作功能如图3-2所示。 3.2.6 相对寻址 相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel, 而构成实际操作数地址的寻址方法。 使用相对寻址时要注意以下两点: (1) 当前PC值是指相对转移指令的存储地址加上该指令的字节数。 (2) 偏移rel是有符号的单字节数。以补码表示, 其值的范围是-128~+127(00H~FFH), 负数表示从当前地址向前转移, 正数表示从前地址向后转移。所以, 相对转移指令满足条件后, 转移的地址(目的地址)为 目的地址=当前PC值+rel=指令存储地址+指令字节数+rel 3.2.7 位寻址 位寻址是在位操作指令中直接给出位操作数的地址, 可以对片内RAM中的128位和特殊功能寄存器SFR中的93位进行寻址。 数据传送类指令有29条, 这类指令是将源操作数传送到指定的目的地址, 传送后源操作数保持不变。分类如下: 3.3.1 访问片内数据存储器的一般数据传送指令 所有指令具有统一的格式, 其格式如下: MOV〈目的操作数〉, 〈源操作〉; 目的操作数单元←源操作数(或单元) 操作码助记符都是“MOV”, 目的操作数和源操作数不同寻址方式的组合就派生出该类的全部指令。因此, 记忆这类指令的关键在于掌握两个操作数的各种寻址方式的组合关系。图3-3给出了该类指令的操作关系图。 根据图3-3 可以推出访问片内数据存储器的一般数据传送类的16条指令。表3-1给出了这些指令及相关说明。 【例 3-1】 设内部RAM(30H)=40H, (40H)=10H, (10H)=00H, (P1)=CAH, 分析以下程序执行后各单元及寄存器、P2 口的内容。 MOV R0, #30H ; (R0) ←30H MOV A, @R0 ; (A)←((R0)) MOV R1, A ; (R1)←(A ) MOV B, @R1 ; (B)←((R1)) MOV @R1, P1 ; ((R1))←(P1) MOV P2, P1 ; (P2)←(P1) MOV 10H, #20H ; (10H)←20H 执行上述指令后的结果为: (R0)=30H, (R1)=(A)=40H, (B)=10H, (40H)=(P1)=(P2)=CAH, (10H)=20H。 3.3.2 片内特殊传送指令 1. 堆栈操作指令 堆栈操作指令共有如下两条: 这两条指令都是双字节指令, 机器码分别为: C0 direct 和D0 direct。 【例 3-2】 若在外部程序存储器中2000H单元开始依次存放0~9的平方值, 数据指针(DPTR)=3A
文档评论(0)