电工学习网

 找回密码
 立即注册
查看: 3266|回复: 0
打印 上一主题 下一主题

寄存器间接寻址和相对寻址的区别

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-18 08:32:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
寄存器寻址是在指令的操作码后给出寄存器,指令可以操作寄存器中的数据。例如:
MOV A,R7
这条指令的含义是将寄存器R7中的数据送到累加器A中。
如果寄存器R7中的数据为10101001,执行该条指令后,R7中的数据会送到累加器A中,累加器A中的数据就变为10101001。
寄存器间接寻址和相对寻址的区别
寄存器寻址
4寄存器间接寻址是在指令的操作码后给出寄存器,该寄存器中存储的不是数据,而是一个地址,指令可以对该地址指示的单元中的数据进行操作。寄存器间接寻址只能对寄存器R0、R1进行。例如:
MOV A,@R0
这条指令的含义是以寄存器 R0 中的数值作为地址,找到该地址指示的存储单元,再将该单元中的数据送到累加器A中
寄存器间接寻址和相对寻址的区别
如果寄存器 R0 中的数值为01010000,该数值也可用50H表示。执行该条指令时,先找到寄存器 R0,然后将它存储的数据 50H (01010000)作为地址单元,再找到50H单元并将该单元存储的数据 01101001送到累加器A中。
寄存器间接寻址和相对寻址的区别
寄存器间接寻址
变址寻址又称为基址寄存器+变址寄存器间接寻址,它是以DPTR或程序计数器(PC)中的数值作为基址,以累加器A中的数值作为地址偏移量,将基址和地址偏移量相加后得到的数值作为地址,再对该地址中的数据进行操作。这种方式主要用来访问ROM。例如:MOVC A,@A+DPTR
这条指令的含义是将DPTR中的数值(基址)与累加器A中的数值(地址偏移量)相加,以相加得到的数值作为地址,再将该地址中的数据送到累加器A中。
如果DPTR中的数值是1234H(DPH存储12H,DPL存储34H),累加器A中的数值为30H,如执行该指令时,先将DPTR中的数值1234H与累加器A中的数值30H相加,得到数值1264H,将1264H作为地址,找到ROM的1264H单元,再将该单元中的数据01010110送到累加器A中,指令执行后,累加器A中的数据变为01010110。
寄存器间接寻址和相对寻址的区别
变址寻址
相对寻址是以执行完当前指令后的程序计数器(PC)中的数值为基址,以操作码后面的数值为地址偏移量,将基址与地址偏移量之和作为地址赋予PC,PC则跳到该地址来执行此地址单元的内容。该寻址方式只能对ROM进行操作。例如:
1000H:SJMP 06H
在这条指令中,标号“1000H”为PC执行指令前的值,操作码“SJMP”意为相对转移,“06H”为相对转移量(即地址偏移量)。由于本条指令占用2B的存储单元,如图4-7所示,当执行完这条指令后,PC的值会变为1002H,将1002H(基址)和06H(地址偏移量)相加,得到1008H,再把1008H赋予PC,PC值变为1008H,它立刻跳到1008H存储单元,开始执行该单元的内容。指令执行前、后PC的位置分别如图所示。
寄存器间接寻址和相对寻址的区别
相对寻址

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-9-3 11:02

Powered by © 2011-2022 www.shop-samurai.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表