执行任何一条指令都需要使用操作数。寻址方式就是根据指令中给出地址寻找操作数地址的方式。

根据指令操作的需要,计算机有多种寻址方式。总的来说,寻址方式越多,计算机的功能就越强,灵活性越大,指令系统也越复杂,因此,在设定寻址方式时,应考虑到需要和可能. 51单片机指令系统中共有7种寻址方式。

1.立即寻址:

立即寻址是指在指令中直接给出操作数,出现在指令中的操作数称为立即数,因此就将这种寻址方式称为立即寻址.为了与直接寻址指令中的直接地址相区别,在立即数前面应加前缀“#”。立即寻址时,指令中地址码部分给出的就是操作数,即取出指令的同时立即得到了操作数,例如指令:

MOV A,#3EH ;A ---3EH

式中,3EH就是立即数,指令功能是把8位立即数3EH送入累加器A.

此外,在指令系统中还有一条16位立即数指令,即:

MOV DPTR, #datal6

其功能是把16位立即数送入数据指针I寄存器。

2.直接寻址

直接寻址时,指令中地址码部分直接给出了操作数单元的有效地址.例如指令:

MOV A,7EH ;A --- (7EH)

其功能是把片内RAM中7EH单元内的数据传送给累加器A。

直接寻址方式只能给出8位地址,因此,此种寻址方式的寻址范围只限于片内RAM,具体地说:

(1)低128单元在指令中直接以单元地址形式给出。

(2)特殊功能寄存器,这时除了可以单元地址形式给出外,还可以寄存器符号形式给出。虽然特殊功能寄存器可以便用符号标志,但在指令代码中还是按地址进行编码的。需要说明的是,直接寻址是访问特殊功能寄存器的惟一方法。

3.寄存器寻址:

寄存器寻址是指在指令中将指定寄存器的内容作为操作数。因此,指定了寄存器就能得到操作数.寄存器寻址时,指令中地址码给出的是某—通用寄存器的编号,例如指令:

MOV A , R1 ; A---(R1)

其功能是把寄存器R1的内容送到累加器A中。由于操作数在A中,所以指定了R1也就得到了操作数。寄存器寻址方式的范围包括:

(1)4个寄存器组共32个通用寄存器,但在指令中只能使用当前寄存器组.因此,在使用前要通过t指定PSw中的Rs1、RS0,以选择当前寄存器组。

(2)部分特殊功能寄存器。例如,累加器A、寄存器B以及数据指针 DPTR。

4.寄存器间接寻址

寄存器间接寻址是指在指令中要到寄存器的内容所指的地址中去取操作数。可以看出,在寄存器寻址方式中,寄存器中存放的是操作数;而在寄存器间接寻址方式中,寄存器中存放的则是操作数的地址,即寄存器为地址指针。这就是说,指令的操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。

寄存器间接寻址也需要以寄存器符号名称的形式表示。为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址中,应在寄存器的名称前加前缀“@”,例如指令:

MOV A,@R0; A---((R0))

寄存器间接寻址的寻址范围是:

(1)片内RAM低128单元,这里只能使用R0,R1作为间址寄存器.其通用形式写为@Ri(i=0,1);

(2)片外RAM64KB;使用DPTR作为间址寄存器,书写形式为@DPTR.

(3)片外RAM低256单元.除可使用DPTR作为间址寄存器外还可以使用R0,R1作为间址寄存器.

(4)堆栈区,堆栈操作指令(PUSH和POP)也属于寄存器间接寻址,即使用SP(堆栈指针)作为间址寄存器的间接寻址方式.

5.变址寻址

变址寻址是以DPTR或者PC作为基础寄存器,累加器A作为变址寄存器,以两者内容相加形成的16位程序存储器地址作为操作数地址.例如指令:

MoVC A, @A+DPTR ; A --- ((A)十(DPTR))

其功能是将DPTR和A的内容相加所得到的程序存储器地址单元的内存送累加器A.

变址寻址指令有如下特点:

(1)变址寻址方式只能对程序存储器进行寻址。

(2)变址寻址方式的指令只有三条:

MOVC A,@A+DPTR;

MOVC A,@A+PC;

JMP @A+DPTR;

其中,前两条是程序存储器读指令,后一 条是无条件转移指令.

(3)尽管变址寻址方式复杂,但这三条指令都都是单字节指令.

(4)变址寻址力式可用于查表操作。

6 相对寻址:

相对寻址是指在指令中l给出的操作数为指令转移的偏移量。相对寻址方式是为实现程序的相对转移而设置的,为相对转移指令所采用:

在相对转移指令中,给出地址偏移量(在51单片I机系列的指令系统中,以“Rel"表示)把Pc的当前值加上偏移量就构成了程序转移目的地的地址。而Pc的当前值是指执行完转移指令后的PC值,即转移指令的Pc值加上它的字节数。因此.转移的目的地的地址可用如下公式表示:

目的地地址=转移指令所在地地址+转移指令字节数+Rel

在51单片l机指令系统中,有许多条相对转移指令。这些指令多数均为两字节指令,只有个别的是三字节指令。偏移量Rel是一个带符号的8位二进制补码数,所能表示数的范围是-128---+127.因此,相对转移指令的所在地址为基点,向前最大可转移(127+转移指令字节数)个单元地址,向后最大可转移(128-转移指令字节数)个单元地址。

例如指令:

JC 70H

该指令表示若进位位c为o,则程序计数器Pc中的内容不变,不转移;若C为1,则以Pc中当前值为基地址,加上偏移量70H后所得结果作为该转移指令的目的地址。

7 位寻址

51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式.

位寻址的范围是:

(1)片内RAM中的位寻址区

片内RAM中的单元地址为20H—2FH,共16个单元128位.为位寻址区,位地址是00H~7FH。这128个位的寻址使用直接地址表示。例如指令:

MOV C,2BH;

该指令的功能是把位寻址区的2BH位状态送给位C。

(2)可位寻址的特殊功能寄存器位。

可位寻址的特殊功能寄存器有11个,对应寻址位共83位。对这些寻址位在指令中有以下4种表示方法。

·直接使用位地址表示法。

·单元地址加位的表示方法。例如,88H单元的位5,则表示为88H.5。

·特殊功能寄存器符号加位的表示方法。例如,psw寄存器的位5,可表示为psw.5。

·位名称表示方法,特殊功能寄存器中的一些寻址位是有名称的。例如,PSW寄存器位5为F0标志位,则可使用F0表示该位。

一个寻址位有多种表示方法,看起来似乎复杂,实际上将为程序设计带来方便。

位寻址时,操作数是二进制数的某一位,其地址出现在指令中,例如指令:

SETB bit ; (bit)---1

单片机位寻址举例_单片机的寻址方式相关推荐

  1. 单片机位寻址举例_单片机学习:51单片机寻址方式详解

    51单片机是对所有兼容Intel 8031指令系统的单片机的统称.该系列单片机的始祖是Intel 8031单片机,后来随着Flash rom 技术的发展,8031单片机取得了长足的发展,成为了应用最广 ...

  2. 单片机位寻址举例_单片机基础及应用 | 04 80C51单片机指令系统

      点击蓝字关注我们 一.单片机指令系统概述 1.指令概述指令:是CPU根据人们的意图来执行某种操作的命令.指令系统:是计算机所能够执行的全部指令的集合.程序:是按人们的要求所编制的指令操作序列.本章 ...

  3. 单片机位寻址举例_基于80C51单片机位寻址编程

    80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式.所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0. 位寻址的范围,也就是 ...

  4. 单片机位寻址举例_mcs51单片机位操作指令及编程举例

    mcs51 单片机位操作指令及编程举例 MCS-51 单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有 一套位变量处理的指令集.在进行位处理时, CY (就是我们前面讲的进位位) 称位累加器 ...

  5. 单片机知识点总结框图_单片机基础知识

    什么是单片机: 顾名思义,单片机中的"单片"就是只有一个芯片, "机"就是指计算机,只有有一个芯片,她却具有简单计算机的功能,这就叫做单片机,也教微处理器微控制 ...

  6. 单片机知识点总结框图_单片机原理及应用期末考试必考知识点重点总结

    单片机概述: 单片机是微单片微型计算机的简称,微型计算机的一种. 它把中央处理器( CPU ) , 随机存储器( RAM ) , 只读存储器( ROM ) , 定时器 计数器以及 1\0 接口,串并 ...

  7. 单片机烧录软件编写_单片机技术系列之一:单片机概述

    按控制要求设计好单片机电路原理图后,还要依据电路原理图将实际的单片机电路制作出来.制作单片机电路有两种方法:一种是用电路板设计软件(如Protel99SE软件)设计出与电路原理图相对应的PCB图(印制 ...

  8. 单片机彩灯移动实验_单片机动态控制64个彩灯实验报告

    目录 一.课题名称---------------------3 二.设计目的---------------------3 三.系统原理图--------------------3 四.方案论证---- ...

  9. 单片机定时器实验两位倒计时秒表_单片机学习「1」 初始51单片机

    问题1:什么是单片机? 采用集成电路技术,将CPU(具有处理数据能力的中央处理器).RAM(随机存储器,类比电脑里的内存条).ROM(程序存储器,类比电脑硬盘).多种I/O口(类比电脑的各种接口,不过 ...

最新文章

  1. 工控随笔_09_西门子_S7-200 Smart与V20 USS通信USS_RPM_R利用轮询的方式通讯异常
  2. Android_图像渲染(Shader)
  3. Linux 常见目录与区别
  4. PL/pgSQL的anyelement例子
  5. HTML的--iframe
  6. CF741C Arpa’s overnight party and Mehrdad’s si
  7. 怎样实现登录用户管理_如何编写程序实现图书管理系统里面的用户管理功能
  8. 查找和排序的一点浅显认识
  9. 电信设置的nat 虚拟服务器192.168.1.3 是什么,VMware WorkStation的三种网络连接方式详解...
  10. mysql5.7.14启动教程_mysql5.7.14安装配置方法图文详细教程
  11. java listener 原理_Java三大器之监听器(Listener)的工作原理和代码演示
  12. 基于udp的协议netty课设题目_Netty UDP示例
  13. 力克“中国智造”之道,亮相第七届工业数字化论坛
  14. bp神经网络优化算法对比,提高bp神经网络精度
  15. 数据库--sql查询某一时间段数据
  16. error Type referred to is not an annotation type:
  17. 【网络攻防技术】实验九——嗅探与欺骗实验
  18. 不让用计算机怎么回怼,当别人怼你时,如何优雅地怼回去
  19. 顺序表倒置java_数据结构-顺序表 java实现-Go语言中文社区
  20. 计算机系优秀团员事迹,【国奖风采,榜样力量】真诚,感恩——计算机学院罗惠娴...

热门文章

  1. 爱奇艺深度语义表示学习的探索与实践
  2. Hive中JOIN的使用入门
  3. 聊聊JVM(十)Mac下hsdis和jitwatch下载和使用
  4. C# C/S 图片验证码功能源码
  5. [New Portal]Windows Azure Virtual Machine (18) Azure Virtual Machine内部IP和外部IP
  6. Head First C学习日志 第七章 创建可变参数的函数
  7. Java的MD5加密和解密
  8. 解决php的It is not safe to rely on the system’s timezone settings的问题
  9. 【题解】【数组】【Prefix Sums】【Codility】Genomic Range Query
  10. 在线聊天javascript代码