寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。

MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。用于寻址内部或外部数据存储器的256个单元。为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。

例:MOV R0,#30H;将值30H加载到R0中

MOV A,@R0;把内部RAM地址30H内的值放到累加器A中

MOVX A,@R0;把外部RAM地址30H内的值放到累加器A中

大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。因用DPTR做为间址寄存器的寻址空间是64K,所以访问片外数据存储器时,我们通常就用DPTR做为间址寄存器。

例:MOVDPTR,#1234H;将DPTR值设为1234H(16位)

MOVXA,@DPTR;将外部RAM或I/O地址1234H内的值放到累加器A中

在执行PUSH(压栈)和POP(出栈)指令时,采用堆栈指针SP作寄存器间接寻址。

例:PUSH 30H;把内部RAM地址30H内的值放到堆栈区中

堆栈区是由SP寄存器指定的,如果执行上面这条命令前,SP为60H,命令执行后会把内部RAM地址30H内的值放到RAM的61H内。

那么做为寄存器间接寻址用的寄存器主要有哪些呢?我们前面提到的有四个,R0、R1、DPTR、SP

寄存器间接寻址范围总结:

1、内部RAM低128单元。对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。

2、外部RAM 64KB。对外部RAM64KB的间接寻址,应使用@DPTR作间址寻址寄存器,其形式为:@DPTR。

例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的单元的内容送入累加器A中。

外部RAM的低256单元是一个特殊的寻址区,除可以用DPTR作间址寄存器寻址外,还可以用R0或R1作间址寄存器寻址。

例如MOVX A,@R0;这条指令的意思是,把R0指定的外部RAM单元的内容送入累加器A。

堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针SP作间址寄存器的间接寻址方式。

寄存器间接寻址方式不可以访问特殊功能寄存器!!

寄存器间接寻址也须以寄存器符号的形式表示,为了区别寄存器寻址我寄存器间接寻址的区别,在寄存器间接寻址方式式中,寄存器的名称前面加前缀标志“@”。

51单片机间接寻址C语言,51单片机寄存器间接寻址方式与举例相关推荐

  1. 寻址方式 寄存器寻址方式 立即数寻址方式 存储器寻址方式: 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式 串操作寻址方式 I/O端口寻址方式

    寻找操作数地址的方法 共有八种: 寄存器寻址方式 立即数寻址方式 存储器寻址方式:( 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式) 串操作寻址方式 I/O端口寻址方式 80 ...

  2. 七种寻址方式(寄存器间接寻址方式)

    操作数在存储器中,操作数的有效地址用SI.DI.BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式.该寻址方式物理地址的计算方法如下: 寄存器间接寻址方式读取存储单元的原理如图所示. ...

  3. stc51单片机入门 c语言,STC51单片机入门 (C语言)

    51单片机发展主要历程:AT89C51系列--STC89C52系列--STC90系列--STC11系列--STC12系列--STC15F系列--STC15W系列(最新主流),由于STC12系列功能已经 ...

  4. 51单片机生成C语言矩形波,单片机产生方波、锯齿波、三角波程序

    单片机 产生方波.锯齿波.三角波程序 #include#define uchar unsigned char #define uint unsigned int unsigned char x=0,m ...

  5. 51单片机驱动ds12887c语言,51单片机+DS12887+12864大数字时钟程序+电路

    /*--------------------------------------------------------------------------- 电子智能时钟程序 单 片 机:STC89C5 ...

  6. 51单片机喇叭c语言,c51单片机io口直接驱动喇叭,播放《挥着翅膀的女孩》.....

    #include #include #include main() { InitialSound(); Play(Music_Girl,0,2,350); while(1) { } } //挥着翅膀的 ...

  7. 热电偶单片机代码c语言,基于单片机的热电偶发生器设计(含电路原理图,程序)...

    基于单片机的热电偶发生器设计(含电路原理图,程序)(课题申报表,任务书,开题报告,中期检查表,外文翻译,论文15000字,程序,答辩PPT) 摘 要 热电偶标准信号发生器为袖珍式键控现场检测仪表.其由 ...

  8. msc51单片机计数器c语言,mcs51单片机计数器工作方式1 计数初值计算与定时编程举例...

    方式1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成.与工作方式0基本相同,区别仅在于工作方式1的计数器TL1和TH1组成16位计数器,从而比工作方式0有更宽的定时/计数范围. ...

  9. plc和单片机及c语言区别,单片机和PLC的区别大解析

    首先我们先来看下什么是单片机? 什么是PLC? 单片机(英文名:Microcontrollers):它是一种集成电路芯片,单片机也被称为微控制器,是因为它最早被用在工业控制领域. PLC 其实就是可编 ...

  10. 单片机定时器c语言程序,单片机C语言编程定时器的几种表达方式

    单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法. 第1种方法: #define FOSC 11059200L //晶振的频率 #define TIMS (655 ...

最新文章

  1. java测试不成功_为什么我的Java布尔测试总是失败?
  2. windbg学习.formats--转换成各种进制
  3. 最受欢迎的应用服务器
  4. SpringBoot创建简单的hello world
  5. linux连同目录一起删除,linux中文件的常用操作
  6. python学习笔记9:面向对象编程,类
  7. new Vue() 和 export default {}及Vue页面组件和标签组件说明与比较(非常重要)
  8. JAVA的对象创建与调用的内存解析
  9. JAVA之所得税计算器
  10. 泰拉瑞亚试图加载不正确的_泰拉瑞亚Switch中文版将在12月19日发售|宝可梦 剑/盾大量细节公布 自动存档可关经验平均分配等...
  11. sql server中binary怎么得到char类型
  12. Excel中文本的拆分与合并
  13. 2022-0828-0640,中文分词,逆向最大匹配算法 RMM
  14. linux命令行显示主机名和当前目录
  15. (一)因式分解机(Factorization Machine,FM)原理及实践
  16. HTTP 状态消息 200 302 304 403 404 500 分别表示什么?
  17. 瑞禧-近红外荧光核酸银纳米团簇/3~10nm非荧光银纳米颗粒以及PEI-AgNCs等纳米金属团簇的分类
  18. freeline加速编译
  19. 一篇讲的很细很好的帖子
  20. 电脑psp模拟器(ppsspp) v1.0.0 中文版​

热门文章

  1. VBA,工作簿workbook相关操作,workbooks.add workbooks.save workbooks.saveas 等等
  2. 动词变名词的变化规则_动词变名词的变化规则例子
  3. 两个向量的点乘和叉乘怎么算_数学基础 —— 向量运算:点乘和叉乘
  4. O365(世纪互联)SharePoint 之使用列表库发布新闻
  5. Android中的传感器之---陀螺仪传感器
  6. 个人和企业都免费的office办公软件
  7. android语法视频教程,英语语法视频讲解
  8. 最新最火最流行的抖音火山上热门技术!
  9. Ubuntu配置固定IP
  10. 经济机器是如何运行的