单片机的累加器A与片外RAM之间的数据传递类指令

单片机的累加器A与片外RAM之间的数据传递类指令1)在51系列单片机中,与外部存储器RAM打交道的只能是A累加器。程序存储器向累加器A传送指令

MOVX A,@Ri

MOVX @Ri,A

MOVX A,@DPTR

MOVX @DPTR,A

单片机的累加器A与片外RAM之间的数据传递类指令

阐明:

1)在51系列单片机中,唯一与外部存储器RAM打交道的是A累加器。 所有需要传输到外部RAM的数据都必须通过A发送,所有需要读取外部RAM中的数据也必须通过A读取。这里我们可以看到内部RAM和外部RAM的区别。 数据可以在内部 RAM 之间直接传输,但不能在外部 RAM 之间传输。 例如,要将外部 RAM 中的某个单元(设置为 0100H 单元的数据)发送到另一个单元(设置为 0200H 单元),也必须先将 0100H 单元的内容读入 A,然后再传输到单元0200H。

要读取或写入外部 RAM,当然还必须知道 RAM 地址。 在最后两条微控制器指令中,地址直接放在DPTR中。 至于前两条指令,由于Ri(即R0或R1)只是一个8位寄存器,因此只提供了低8位地址。 因为有时扩展的外部RAM数量比较少,小于等于256个,所以只需要提供8位地址即可。

使用时,应先将要读写的地址发送到DPTR或Ri中,然后再使用读写命令。

举例:将单片机外部RAM 中100H 单元的内容发送到外部RAM 中200H 单元。

单片机的累加器A与片外RAM之间的数据传递类指令

MOV DPTR,#0100H

MOVX A,@DPTR

MOV DPTR,#0200H

MOVX @DPTR,A

程序存储器将指令传送到累加器A

MOVC A, @A+DPTR 该指令是将ROM中的数字发送给A。该指令也称为单片机查表指令。 该指令通常用于检查 ROM 中已准备好的表描述:

该指令引入了一种新的寻址方法:变址寻址。 该指令是在ROM的地址单元中查找数据。 显然,必须知道该单元的地址。 该单元的地址确定如下:执行该指令时,DPTR 中有一个数字,A 中有一个数字。 Execute 执行该指令时,将 A 和 DPTR 中的数字相加,即成为要查找的单元的地址。

单片机的累加器A与片外RAM之间的数据传递类指令

查找到的结果放在A 中。因此,该指令执行前后A 中的值不一定相同。

例:R0中有一个数字,要求查表确定其平方值(该数字的取值范围为0-5)

MOV DPTR,#TABLE

MOV A,R0

MOVC A,@A+DPTR

表:DB 0,1,4,9,16,25

假设R0中的值为2并发送到A,DPTR中的值为TABLE。 那么最终ROM单元的地址就是TABLE+2。 就是你去这个单位取数的时候,得到的是4.,显然正好是2的平方。 其他数据也可类推。

单片机的累加器A与片外RAM之间的数据传递类指令

标签的真正含义:从这个地方也可以看出另一个问题。 我们用标签来代替具体的单位地址。 事实上,标签的真正含义是地址值。 这里代表ROM中存储的数据0、1、4、9、16、25的起始位置。 在我们之前学过的LCALL DELAY单片机指令中,DELAY代表的是ROM中存储的标有DELAY的程序的起始地址。 其实CPU就是通过这个地址找到这个程序的。

您可以通过以下例程查看标签的含义:

MOV DPTR,#100H

MOV A,R0

MOVC A,@A+DPTR

组织0100H。

数据库0,1,4,9,16,25

如果R0中的值为2,则最终地址为100H+2,即102H和在单元格102H中找到的4。 你能明白这一点吗?

单片机

周立功的人生,看看他是如何从零开始成为一代大师

2024-5-7 7:02:09

单片机

洛阳城轨交通学校招生简章(原系洛阳铁路中等专业学校)

2024-5-7 8:02:53

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索