搜索
写经验 领红包

你明白寄存器间接寻址吗为什么(你明白寄存器间接寻址吗英语)

导语:你明白寄存器间接寻址吗?

1、寄存器间接寻址:

S7-300/400有两个地址寄存器AR1和AR2,可以用它们对各存储区的地址作寄存器间接寻址。地址寄存器的地址值加上地址偏移量,形成地址指针,后者指向数据所在的存储单元。

在下图中是地址寄存器间接寻址的双字地址指针的格式,其中第0~2位(xxx)位被寻址地址中位的编号(0~7),第3~18位为被寻址地址的字节的编号,第24~26位(rrr)为被寻址地址的区域标识号(见下表)。第31位x=0为区域内的间接寻址,为1区域间的间接寻址。如果要用寄存器指针访问一个字节、字或双字,必须保证指针的位地址编号为0.

2、与地址寄存器有关的指令

可以不经过累加器1,直接将操作数装入或传送出地址寄存器AR1和AR2(见下表),或从AR1和AR2将数据传送出来。也可以将两个寄存器的内容直接交换,指令TAR1‹D›和TAR2‹D›的目的区为双字MD、LD、DBD、DID。下面应用举例:

+AR1指令将地址寄存器AR1的内容加上作为地址偏移量的累加器1的低字的内容,或加上指令中16位常数(-32768~+32767),结果在AR1中。+AR2指令具有类似的功能。

16位有符号整数首先被扩充24位,其符号位不变,然后与AR1中的低24位有效数字相加。地址寄存器中的存储区标识符rrr(第24~26位),保持不变。

3、寄存器区域内间接寻址

区域内间接寻址的地址指针格式与存储器间接寻址的相同,包括被寻址数值所在的存储单元的字节地址和位地址,存储区的类型在指令中给出,这种指针格式适用于在某一存储区内寻址,第24~26位和第31位应为0。下面是区域内间接寻址的例子。如下图:

4、寄存器区域间的间接寻址

区域间的间接寻址的地址指针格式的第24~26位还包含了说明地址所在存储区的区域标识符rrr,下面是区域间间接寻址的例子

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小婷创作整理编辑!