寻址方式就是寻找操作数或指令地址的方式。寻址方式包含两方面的内容:一是操作数的寻址,二是指令地址的寻址(如转移指令、调用指令)。寻址方式是计算机性能的具体体现,也是编写程序的基础,必须非常熟悉并灵活运用。

对于两操作数指令,源操作数有寻址方式,目的操作数也有寻址方式。若不特别声明,后面提到的寻址方式均指源操作数的寻址方式。

80c51指令系统共有7种寻址方式,包括:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。现以7条指令为例说明这7种寻址方式。

(1)立即寻址:将操作数直接写在指令中。

如指令①: mov a,#3ah 执行的操作是将立即数3ah送到累加器a中,因为指令中有立即数3ah,所以称此寻址方式为立即寻址。注意,立即数前面必须加“#”号,以区别立即数和直接寻址。该指令的执行过程如图1所示。

图1 立即数寻址示意图

(2)寄存器寻址:是指将指令操作数存放于寄存器中,寄存器包括工作寄存器r0~r7、累加器a、通用寄存器b、地址寄存器dptr等。

如指令②: mov a,r0 ;(a)←(r0)

该指令将寄存器r0中的数送入累加器a中,因为指令源操作数为寄存器r0,所以称此寻址方式为寄存器寻址。

如果程序状态寄存器psw的rs1rs0=00(选中第0组工作寄存器,对应地址为(00h~07h),设ram区00h的内容为20h,则执行mov a,r0指令后,累加器a中的内容变为20h。该指令执行过程如图2所示。

图2 寄存器寻址示意图

(3)直接寻址 :是指把存放操作数的内存单元的地址直接写在指令中。在80c51单片机中可以直接寻址的存储器主要有内部ram区和特殊功能寄存器sfr区。

如指令③:mov a,30h ;(a)←(30h)

该指令将地址为30h的存储单元的内容送入累加器a,因为指令源操作数为地址直接给出的存储单元,故称此寻址方式为直接寻址。若(30h)=3ah,指令③执行后,(a)=3ah,该指令的执行过程如图3所示。

图3 直接寻址示意图

(4)寄存器间接寻址:将存放操作数的存储单元的地址放在寄存器中,指令中只给出该寄存器。执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操作数并完成相应操作。在80c51指令系统中,用于寄存器间接寻址的寄存器有r0、r1和dptr,称为寄存器间接寻址寄存器。

注意:间接寻址寄存器前面必须加上符号“@”。

如指令④:mov a,@r0 ;(a)←((r0))

该指令将以r0中内容为地址的存储单元的内容送入累加器a中,因为指令操作数是存储单元,其地址由寄存器r0间接给出,所以称此寻址方式为寄存器间接寻址。

设r0=3ah,内部ram 3ah中的值是65h,则指令mov a,@r0的执行结果是累加器a的值为65h,该指令的执行过程如图4所示。

图4 寄存器间接寻址示意图

(5)变址寻址 :是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。dptr或pc是基址寄存器,累加器a是变址寄存器。这种寻址方式称为变址寻址。该寻址方式主要用于查表操作。

当执行指令⑤时,设(a)=50h ,(dptr)=2007h,(2057h)=60h ,指令⑤执行后movc a,@a+dptr ;(a)←((a)+(dptr))=(50h+2007h)=(2057h)=60h。

该指令将dptr中的基地址2007h与a中的偏移地址50h相加,形成实际地址2057h,再将地址为2057h的存储单元中的内容60h送入累加器a中。显然这种寻址方式称为变址寻址。该指令执行过程如图5所示。

图5 变址寻址示意图

(6)相对寻址 :是指程序计数器pc的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)。这种寻址方式称为相对寻址。该类寻址方式主要用于跳转指令。

如指令⑥:sjmp rel ;(pc)←(pc)+rel

当执行指令⑥时,设当前(pc)=2009h,而相对偏移量rel=02h,则执行该指令后,(pc)=2009h+02h=200bh,即程序由地址为2009h处跳转到200bh处执行,其跳转的距离为相对偏移量rel=02h。由于指令中的操作数为相对偏移量rel ,所以称这种寻址方式为相对寻址。该指令的执行过程如图6所示。

图6 相对寻址示意图

(7)位寻址 :指令中操作数为8位二进制数某一位,称为位寻址。80c51单片机中,操作数不仅可以按字节为单位进行操作,也可以按位进行操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。

位寻址区包括专门安排在内部ram中的两个区域:一是内部ram的位寻址区,地址范围是20h~2fh,共16个ram单元,位地址为00h~7fh;二是特殊功能寄存器sfr中有11个寄存器可以位寻址。参见位地址的定义。

例如:setb acc.0 ;(acc.0)←1 该指令将累加器的最低位acc.0置1,由于指令中的操作数为一位二进数,故称此寻址方式为位寻址。该指令的执行过程如图7所示。

图7 位寻址示意图

由寻址方式的讨论可知,操作数按类型可分为:立即数、寄存器、存储单元、位操作数、相对偏移量。而存储单元地址又可有直接寻址,寄存器间接寻址,变址寻址三种。

各种寻址方式对应操作数的指令符号规定如下。

(1)#data:表示8位立即数,如#3ah。

(2)#data16:表示16位立即数,即0000h~ffffh。

(2)rn:表示寄存器r0~r7。

(3)direct:表示片内存储单元的直接地址, 如30h。

(4)addr16,addr11:表示指令中的16位或11位转移地址。

(5)rel:表示相对偏移量,如 02h。

(6)bit:表示位地址,如acc.0。

(7)( ):表示存储单元的内容,如(30h)=40h。

(8)(( )):表示间接寻址的存储单元内容,((r0))=(7fh)=50h。

计算机寻址的最低单元,80c51单片机指令系统的7种寻址方式相关推荐

  1. C51汇编语言寻址方式,80C51单片机指令系统的7种寻址方式

    寻址方式就是寻找操作数或指令地址的方式.寻址方式包含两方面的内容:一是操作数的寻址,二是指令地址的寻址(如转移指令.调用指令).寻址方式是计算机性能的具体体现,也是编写汇编语言程序的基础,必须非常熟悉 ...

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

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

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

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

  4. 计算机组成原理学习笔记第5章指令系统 5.3——操作数寻址方式

    有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) Last(在此处点击使用,直达文末) First (在文末点击使用,返回文章首部) 目录 0.思维导图 1.立即数寻 ...

  5. jnz和djnz_第3章单片机指令系统_练习

    第3章指令系统 一.简答题 1. AT89C51共有几种寻址方式?举例说明每种寻址方式的特点. 答:寻址即寻找操作数的地址.AT89C51单片机指令系统共有7种寻址方式: (1)立即寻址方式:所谓立即 ...

  6. 80C51单片机期末复习

    80C51有基本型和增强型.区别:增强型多了定时器,内置存储空间不同. 1冯•诺依曼思想计算机由运算器.控制器.存储器.输入设备.输出设备组成这一计算机的经典结构. 2将CPU.存储器.I/O接口集成 ...

  7. pushpop指令的操作数必须是字操作数_MCS-51单片机指令系统(1)

    指令系统概述 指令是计算机用于控制各种功能部件完成的某一特定动作的指示和命令.一台计算机能识别和执行的指令集合即为其指令系统.指令系统是一套控制计算机执行操作的编码,通常称为机器语言.机器语言是计算机 ...

  8. 间接寻址级别不同_单片机指令系统与寻址方式

    单片机要正常运作,事先需编制程序,再把程序放入存贮器中,然后由CPU执行该程序.程序是由指令组成的,指令的基本组成是操作码和操作数.单片机的品种很多,设计时怎样表示操作码和操作数,都有各自的规定,再有 ...

  9. 80C51单片机指令寻址方式

    单片机指令寻址方式 操作码 操作数 指令寻址方式 寄存器寻址方式 直接寻址方式 寄存器间接寻址 立即寻址方式 变址寻址方式 位寻址方式 相对寻址方式 首先介绍单片机指令系统的操作码和操作数 操作码 1 ...

  10. 80C51单片机复习资料(一)

    什么是单片机?其主要特点? 单片机是把CPU.存储器(ram和rom)/输入.输出接口电路以及定时器.计数器等集成在一起的集成电路芯片. 它具有体积小.价格低.可靠性高和易于嵌入式应用等特点,还具有控 ...

最新文章

  1. phpstudy本地调试运行TP5的后台源码
  2. pythonif语句缩进_Python中多行IF语句缩进的代码样式?
  3. FCKeditor在线文本编辑器初级应用
  4. postgresql 备份_等保涉及的PostgreSQL数据库
  5. 基于VHDL的RISC microprocessor设计
  6. gtest 测试部分_全部关于测试–第1部分
  7. oracle10g rac升级到10.2.0.5
  8. Heroku第三方服务接入指南(二)
  9. 170319 剑指offer 1.把一个字符串转化成整数(简单问题的全面性考虑)
  10. 用java设计一个公司局域网_java实现局域网内单对单和多对多通信的设计思路
  11. 基于html的旅游网站-北京
  12. 春考计算机组装与维护,计算机组装与维护教程(高职高专计算机系列)
  13. Eplan执行翻译操作详细教程
  14. JS中原型和原型链的详细讲解(附代码示例)以及 new关键字具体做了什么的详细讲解
  15. 硬座、软座、硬卧、软卧、以及餐车座
  16. Python3 Django的补充
  17. 查询2021高考成绩广西排名,2021广西高考成绩排名顺序查询,广西省高考全省排名怎么查...
  18. sudo gem uninstall cocoapods 报错
  19. 深度学习_目标检测_Soft-MNS详解
  20. 磁盘格式化(创建文件系统)

热门文章

  1. 苍穹官网HTML源码带音乐
  2. 牛客网 - 简单的分数(模拟)
  3. spider mysql_MySQL存储引擎之Spider内核深度解析
  4. .net core 部署在windows 2008 server 64位上出现Http Error 502.5的解决方案
  5. 面向对象系列(一)-关键字
  6. python全栈开发中级班全程笔记(第三模块、第一章(多态、封装、反射、内置方法、元类、作业))...
  7. 解决curl ftp:192.168.4.12 (67) Access denied: 530和500问题
  8. 蓝桥杯——单片机学习(3——点亮LED灯)
  9. 1227. 飞机座位分配概率
  10. 微信内置浏览器清除缓存