当前课程知识点:单片机原理及应用 > 3 指令系统 > 3.6 外部RAM传送指令 > 外部RAM传送指令
同学
你好
今天我们将来介绍一下
实现片外RAM到片内累加器A的传送指令
MOVX
该条指令可以实现片外数据存储器
和片内的累加器A之间的数据的传送
注意一下和MOV这条指令的区别
MOV这条指令我们前面讲过
它实现的是片内RAM单元之间的数据的传送
MOVX它实现的是片外RAM单元
到片内指定的累加器A之间的数据的传送
指令的格式为
MOVX 目的操作数 , 源操作数
源和目的操作数中有一个必须是累加器A
片外数据存储器必须用寄存器间接寻址方式
寻址寄存器可以用DPTR16位的数据指针寄存器
这样可以寻址的范围就是64KB的片外RAM的空间
读写指令的举例
我们来看一下
第一个
DPTR作为16位的数据指针
它的寻址的范围是片外的64KB的空间
我们看第一条指令
MOVX A , @ DPTR
该条指令是把片外RAM的单元读出来
送给累加器A
读片外RAM的哪个单元呢
该单元的地址就由DPTR16位的数据指针来提供
第二个指令
MOVX @DPTR , A
它就是实现把累加器A中的八位数据
传送给片外RAM的某一个单元
那么是传送给哪一个单元
这个单元的地址也是由DPTR
16位的数据指针来提供
那么该16位的地址是通过哪个口
来输出给片外RAM
我们前面也提到过
实际上是通过我们51单片机的P0口和P2口
向片外的RAM来传送DPTR里面的16位的地址信息
其中16位地址的低八位
是通过P0口来传16位地址的
高八位是通过P2口来传
八位的数据信息通过谁
来实现传送到片外RAM中去
也是通过P0口
所以P0口它既要传送八位的数据信息
又要负责传送16位地址里面的
低八位的数据信息
除了用DPTR来作为数据指针之外
当然我们也可以利用Ri来作为八位的数据指针
由于Ri只有八位
所以它能提供的地址空间
只能寻找到片外的256个单元的空间
那我们看相应的指令MOVX A , @ Ri
注意一下Ri只能是R0和R1
它就是把片外RAM单元的内容送给累加器A
是片外RAM的哪个单元
该单元的地址就由Ri来提供
只能提供八位的
第二个指令MOVX @Ri , A
就是实现把累加器A的内容
输出给片外RAM的某个单元
相关单元的地址也是由Ri来负责提供
好的
了解了MOVX这个指令之后
我们来看一道例题
如何实现片外数据存储器
把片外的3000H这个单元的内容
输出给片外的3200H这个单元中去
如何来实现片外RAM单元之间的
信息的传递
我们前面说过
对于MOVX这条指令
它只能够首先实现片外RAM单元
和累加器A之间的数据的传递
不能够直接实现片外RAM单元之间的传递
所以我们要想实现
这个片外RAM单元之间数据的传送
要通过累加器A过渡一下
所以我们看程序第一条指令
MOV DPTR , #3000H
它的功能就是首先对DPTR赋初值
就是把立即数加上地址了
将3000H数据送给DPTR存放
再就是MOVX A ,@DPTR
去实现把片外RAM 3000H
这个地址的内容取出来送给累加器A
累加器A里面的内容就变成56H
然后再给DPTR赋其他的地址
MOV DPTR , #3200H
该指令功能是把这个地址
把立即数地址信息3200H送给DPTR
然后MOVX @DPTR , A
就实现把A里面存放的内容56H
再送到片外RAM的地址是3200H单元去存放
这样通过累加器A的过渡
就实现了片外RAM单元3000H的单元内容
输出给片外RAM地址3200H的单元中去
好的
通过这道例题
同学们应该能够体会到
MOVX这条指令的功能
我们需要特别注意的是
片外RAM不能够使用直接寻址的方式
像下面的这条指令MOVX A , 3000H
那么由于3000H使用的是直接寻址的方式
那么这条指令是错误的
不能书写
对于片外的RAM
我们只能够使用寄存器的间接寻址的方式
就是你要用DPTR或者Ri来先存放单元地址
通过寄存器间接寻址的方式
来实现片外RAM的单元传递到片内中
好的
今天我们主要介绍了一下MOVX
这条片外RAM单元向片内累加器A之间数据传输的指令
今天的课就分享到这里
同学们再见
-1.1 单片机的名称
--单片机的名称
-1.2 单片机的相关概念
--单片机的相关概念
-1.3 单片机的设计语言及软件
-1.4 单片机的发展
--单片机的发展
-1.5单片机的应用
--单片机的应用
-1.6 第一单元作业
-2.1 单片机的结构框图
--单片机的结构框图
-2.2 80C51内部结构
-2.3 信号引脚
--信号引脚
-2.4 内部数据存储器RAM
-2.5 特殊功能寄存器
--特殊功能寄存器
-2.6 堆栈
--堆栈
-2.7 内部程序存储器ROM
-2.8 存储器的结构特点
--存储器的结构特点
-2.9 并行输入输出接口电路
-2.10 并口功能与时序
--并口功能与时序
-2.11 工作方式
--工作方式
-2.12 最小应用系统
-- 最小应用系统
-2.13 第二单元作业
-3.1 指令格式
--指令格式
-3.2 立即寻址与直接寻址
-3.3 寄存器寻址与寄存器间接寻址
-3.4 变址间接寻址与位寻址
-3.5 内部RAM传送指令
-3.6 外部RAM传送指令
-3.7 ROM传送指令
--ROM传送指令
-3.8 交换指令
--交换指令
-3.9 堆栈操作指令
--堆栈操作指令
-3.10 传送类指令习题讲解
-3.11 算术运算类指令特点
-3.12 加法指令
--加法指令
-3.13 加法习题、减法和乘除指令
-3.14 逻辑运算指令
--逻辑运算指令
-3.15 布尔变量操作指令
--布尔变量操作指令
-3.16 无条件转移指令
--无条件转移指令
-3.17 条件转移指令
--条件转移指令
-3.18 循环转移指令
--循环转移指令
-3.19 子程序相关指令
--子程序相关指令
-3.20 并口访问指令及指令小结
-3.21 第三单元作业
-4.1 汇编程序约定
--汇编程序约定
-4.2 宏指令
--宏指令
-4.3 汇编控制指令
--汇编控制指令
-4.4 汇编语言程序设计步骤
-4.5 顺序程序举例
-- 顺序程序举例
-4.6 单重分支结构
--单重分支结构
-4.7 多重分支结构
--多重分支结构
-4.8 单重循环结构
--单重循环结构
-4.9 计数控制循环程序
--计数控制循环程序
-4.10 特征控制循环程序
-- 特征控制循环程序
-4.11 多重循环程序
--多重循环程序
-4.12 子程序的概念
--子程序的概念
-4.13 子程序设计注意事项
-4.14 子程序举例
--子程序举例
-4.15 第四单元作业
-5.1 系统扩展
--系统扩展
-5.2 51单片机扩展方法
-5.3 存储器单元位数扩充方法
-5.4 存储器容量单元扩充方法
-5.5 译码线选法
--译码线选法
-5.6 程序存储器的类型
--程序存储器的类型
-5.7 程序存储器的扩展
--程序存储器的扩展
-5.8 数据存储器的扩展
--数据存储器的扩展
-5.9 存储器综合扩展
--存储器综合扩展
-5.10 单片机存储器系统的特点
-- 单片机存储器系统的特点
-5.11 第五单元作业
-6.1 中断技术
--中断技术
-6.2 中断优先级及中断系统内部结构
-6.3 中断控制寄存器及中断响应过程
-6.4 中断请求的撤消
--中断请求的撤消
-6.5 外部中断举例
--外部中断举例
-6.6 定时器/计数器
--定时器/计数器
-6.7 定时计数器工作方式及程序编写
-6.8 定时器举例
--定时器举例
-6.9 第六单元作业
-7.1 并行接口
-- 并行接口
-7.2 并口举例
--并口举例
-7.3 并口扩展芯片
--并口扩展芯片
-7.4 8155连接方式及编程
-7.5 键盘接口技术
--键盘接口技术
-7.6 按键处理程序及举例
-7.7 键盘扫描子程序
-- 键盘扫描子程序
-7.8 显示接口技术
--显示接口技术
-7.9 多位字符静态显示
--多位字符静态显示
-7.10 多位字符动态显示
--多位字符动态显示
-7.11 第七单元作业
-8.1 流水灯控制系统设计
--html
-8.2 数码管显示系统设计
--html
-8.3 按键控制系统设计
--html
-8.4 中断控制系统设计
--html
-8.5 定时计数器系统设计
--html
-8.6 串口通信系统设计
--html
-8.7 汉字显示系统设计
--html
-8.8 单片机烧录方法
--单片机烧录方法
-8.9 第八章作业-作业