51单片机间接寻址C语言,51单片机寄存器间接寻址方式与举例
寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。
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单片机寄存器间接寻址方式与举例相关推荐
- 寻址方式 寄存器寻址方式 立即数寻址方式 存储器寻址方式: 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式 串操作寻址方式 I/O端口寻址方式
寻找操作数地址的方法 共有八种: 寄存器寻址方式 立即数寻址方式 存储器寻址方式:( 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式) 串操作寻址方式 I/O端口寻址方式 80 ...
- 七种寻址方式(寄存器间接寻址方式)
操作数在存储器中,操作数的有效地址用SI.DI.BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式.该寻址方式物理地址的计算方法如下: 寄存器间接寻址方式读取存储单元的原理如图所示. ...
- stc51单片机入门 c语言,STC51单片机入门 (C语言)
51单片机发展主要历程:AT89C51系列--STC89C52系列--STC90系列--STC11系列--STC12系列--STC15F系列--STC15W系列(最新主流),由于STC12系列功能已经 ...
- 51单片机生成C语言矩形波,单片机产生方波、锯齿波、三角波程序
单片机 产生方波.锯齿波.三角波程序 #include#define uchar unsigned char #define uint unsigned int unsigned char x=0,m ...
- 51单片机驱动ds12887c语言,51单片机+DS12887+12864大数字时钟程序+电路
/*--------------------------------------------------------------------------- 电子智能时钟程序 单 片 机:STC89C5 ...
- 51单片机喇叭c语言,c51单片机io口直接驱动喇叭,播放《挥着翅膀的女孩》.....
#include #include #include main() { InitialSound(); Play(Music_Girl,0,2,350); while(1) { } } //挥着翅膀的 ...
- 热电偶单片机代码c语言,基于单片机的热电偶发生器设计(含电路原理图,程序)...
基于单片机的热电偶发生器设计(含电路原理图,程序)(课题申报表,任务书,开题报告,中期检查表,外文翻译,论文15000字,程序,答辩PPT) 摘 要 热电偶标准信号发生器为袖珍式键控现场检测仪表.其由 ...
- msc51单片机计数器c语言,mcs51单片机计数器工作方式1 计数初值计算与定时编程举例...
方式1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成.与工作方式0基本相同,区别仅在于工作方式1的计数器TL1和TH1组成16位计数器,从而比工作方式0有更宽的定时/计数范围. ...
- plc和单片机及c语言区别,单片机和PLC的区别大解析
首先我们先来看下什么是单片机? 什么是PLC? 单片机(英文名:Microcontrollers):它是一种集成电路芯片,单片机也被称为微控制器,是因为它最早被用在工业控制领域. PLC 其实就是可编 ...
- 单片机定时器c语言程序,单片机C语言编程定时器的几种表达方式
单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法. 第1种方法: #define FOSC 11059200L //晶振的频率 #define TIMS (655 ...
最新文章
- java测试不成功_为什么我的Java布尔测试总是失败?
- windbg学习.formats--转换成各种进制
- 最受欢迎的应用服务器
- SpringBoot创建简单的hello world
- linux连同目录一起删除,linux中文件的常用操作
- python学习笔记9:面向对象编程,类
- new Vue() 和 export default {}及Vue页面组件和标签组件说明与比较(非常重要)
- JAVA的对象创建与调用的内存解析
- JAVA之所得税计算器
- 泰拉瑞亚试图加载不正确的_泰拉瑞亚Switch中文版将在12月19日发售|宝可梦 剑/盾大量细节公布 自动存档可关经验平均分配等...
- sql server中binary怎么得到char类型
- Excel中文本的拆分与合并
- 2022-0828-0640,中文分词,逆向最大匹配算法 RMM
- linux命令行显示主机名和当前目录
- (一)因式分解机(Factorization Machine,FM)原理及实践
- HTTP 状态消息 200 302 304 403 404 500 分别表示什么?
- 瑞禧-近红外荧光核酸银纳米团簇/3~10nm非荧光银纳米颗粒以及PEI-AgNCs等纳米金属团簇的分类
- freeline加速编译
- 一篇讲的很细很好的帖子
- 电脑psp模拟器(ppsspp) v1.0.0 中文版​
热门文章
- VBA,工作簿workbook相关操作,workbooks.add workbooks.save workbooks.saveas 等等
- 动词变名词的变化规则_动词变名词的变化规则例子
- 两个向量的点乘和叉乘怎么算_数学基础 —— 向量运算:点乘和叉乘
- O365(世纪互联)SharePoint 之使用列表库发布新闻
- Android中的传感器之---陀螺仪传感器
- 个人和企业都免费的office办公软件
- android语法视频教程,英语语法视频讲解
- 最新最火最流行的抖音火山上热门技术!
- Ubuntu配置固定IP
- 经济机器是如何运行的