电子说
关于间接寻址分为存储器间接寻址和地址寄存器间接寻址,本文主要针对地址寄存器间接寻址进行详细讲解。
一、AR 的格式介绍
地址寄存器是专门用于寻址的一个特殊指针区域,西门子的地址寄存器共有两个:AR1 和 AR2,每个 32 位。当使用在区域内寄存器间接寻址中时,我们知道这时的 AR 中的内容只是指明数值单元,因此,区域内寄存器间接寻址时,寄存器中的内容等同于上帖中提及的存储器间接寻址中的双字指针。
这样规定,就意味着 AR 的取值只能是:0.0 ——65535.7
例如:当 AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于 26.4。
而在区域间寄存器间接寻址中,由于要寻址的区域也要在 AR 中指定,显然这时的 AR 中内容肯定于寄存器区域内间接寻址时,对 AR 内容的要求,或者说规定不同。
比较一下两种格式的不同,我们发现,这里的第 31bit 被固定为 1,同时,第 24、25、26 位有了可以取值的范围。聪明的你,肯定可以联想到,这是用于指定存储区域的。对,bit24-26 的取值确定了要寻址的区域,它的取值是这样定义的:
如果我们把这样的 AR 内容,用 HEX 表示的话,那么就有:
当是对 P 区域寻址时,AR=800xxxxx
当是对 I 区域寻址时,AR=810xxxxx
当是对 Q 区域寻址时,AR=820xxxxx
当是对 M 区域寻址时,AR=830xxxxx
当是对 DB 区域寻址时,AR=840xxxxx
当是对 DI 区域寻址时,AR=850xxxxx
当是对 L 区域寻址时,AR=870xxxxx
经过列举,我们有了初步的结论:如果 AR 中的内容是 8 开头,那么就一定是区域间寻址;如果要在 DB 区中进行寻址,只需在 8 后面跟上一个 40。84000000-840FFFFF 指明了要寻址的范围是:DB 区的 0.0——65535.7。
例如:当 AR=840000D4(hex)=1000 0100 0000 0000 0000 0000 1101 0100(b),实际上就是等于 DBX26.4。
二**、AR 的格式的程序**
程序:
在程序中使用SLD进行地址偏移,是因为地址是从第88个字节地址开始,如有其他不理解的,可以直接通过微信公众平台,联系小编。
免责声明:本文系网络转载,版权归原作者所有。但因转载众多,无法确认真正原始作者,本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将立即删除内容!本文内容为原作者观点,并不代表本公众号赞同其观点和对其真实性负责。
全部0条评论
快来发表一下你的评论吧 !