31寻址方式.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
31寻址方式

第三章 指令系统--分类 概述 采用汇编语言 共有33种、111条指令。 按指令字节归类 49条单字节指令 45条双字节指令 17条3字节指令 按指令周期分类 64条单机器周期指令 45条双机器周期指令 2条4机器周期指令 按指令功能分类 传送类指令 算术运算类指令 逻辑运算类指令 控制转移类指令 位操作指令 指令系统 指令格式 [标号:] 操作码 [目的操作数][,原操作数][;注释] 例如: example1: MOV A,#0AH ;将立即数送到累加器中 example2: add a,#08 ;将累加器中的数加上8再 ;送回累加器 MCS—51的指令通常包括操作码和操作数两部分 指令系统 在指令描述中使用了如下符号 Rn--当前选择的8个工作寄存器R0--R7,n=0--7。 @Ri--用作间接寻址的工作寄存器,i=0,1。表示寄存器间接寻址方式。 direct--8位直接地址。用于寻址内部RAM或SFR。 #data--8位立即数。 #data16--16位立即数。 addr16--16位目的地址。只限于LCALL和LJMP指令使用。 addr11--11位目标地址。只限于ACALL和AJMP使用。 rel--补码表示的8位偏移量。用于相对转移指令中。 bit--内部RAM和SFR中的位地址。用于位寻址的指令。 /bit--位地址中的位取反。 寻址方式 51单片机有七种寻址方式 寄存器寻址 直接寻址 寄存器间接寻址 立即寻址 基址寄存器加变址寄存器间接寻址 相对寻址 位寻址 寄存器寻址 一、寄存器寻址 寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。 例如: MOV A,R1 这条指令的功能是把工作寄存器R1中的内容传送到累加器A中,由于操作数在R1中,因此指令中指定了R1,也就得到了操作数。 寄存器寻址方式的寻址范围包括: (1)工作寄存器组R0—R7,四组共32个寄存器。值得注意的是,在指令中只能使用当前工作寄存器组中的寄存器,因此使用前可通过对PSW寄存器中的位RS1和RS0的设置来选择当前工作寄存器组。 (2)部分特殊寄存器ACC,B,DPTR。 直接寻址 二、直接寻址 直接寻址就是在指令中直接给出操作数所在单元的真实地址。这里给出的操作数直接地址为8位二进制地址。 例如: MOV A,30H 此指令的功能是把内部RAM单元30H中的数据传送给累加器A,指令中30H就是操作数的直接地址。直接寻址方式的寻址范围包括: (1)内部数据存储器(RAM)低128单元。 (2)特殊功能寄存器(SFR)。SFR在指令的表示中除了可以以直接地址形式给出外,还可以以寄存器符号形式给出,如对累加器A,在指令中可使用其直接符号形式地址E0H,也可使用其符号形式ACC。值得强调的是直接寻址方式是访问特殊功能寄存器的唯一方法。 访问程序存储器用LJMP addr16 和 AJMP addr11。 寄存器间接寻址 三、寄存器间接寻址 寄存器间接寻址方式中,寄存器内存放的是操作数的地址即操作数是通过寄存器间接得到的。 寄存器间接寻址在寄存器名称前面加上间接寻址符 @。 例如: MOV R1,#68H MOV A,@R1 ;将R1所指向的地址中的数据送到A。 若R1中的数是68H,则该指令将RAM 68H单元中的数送到A. 等效于 MOV A,68H MCS-51规定,采用R0、R1、DPTR作为间接寻址寄存器,因此,相应的寄存器间接寻址方式的寻址范围也就确定了: (1)采用R0或R1作间址寄存器,可寻址片内数据存储器RAM的低128B单元和片外数据存储器的低256B单元。 (2)采用DPTR作间址寄存器,可寻址片外数据存储器的整个64KB地址空间。 (3)堆栈指针SP用于指示堆栈操作的地址,因此,PUSH和POP指令也是寄存器间接寻址。 立即寻址 四、立即寻址 立即寻址方式就是实际操作数作为指令的一部分,在指令中直接给出,取指令时,可在程序存储器中立刻取得操作数。通常把出现在指令中的操作数称为立即数。 采用立即寻址方式的指令,在立即数前面加上立即寻址符“#”。 例如: MOV R1,#03H ;将立即数3送到R1中。 除了一条指令需16位长的立即数外,都是8位的立即数,这条16位的立即寻址指令是: MOV DPTR,#addr16 例如: MOV DPTR,#0FFAH ;将立即数0FFAH送到数据 ;指针DPTR中。 立即寻址方式主要用来给寄存器或存储单元赋初值。 基址寄存器加变址寄存器间接寻址 五、基址寄存器加变址寄存器间接寻址 这种寻址方式用于寻

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档