(1)寄存器間接尋址概述
寄存器間接尋址是通過使用CPU內部集成的兩個地址寄存器AR1和AR2存儲地址指針來實現的尋址方式,使用時分為內部區域間接尋址和交叉區域尋址兩種尋址方式。
AR1,AR2均為32位寄存器,寄存器間接尋址只使用32位指針。對地址寄存器AR操作的相關指令有:
(2)寄存器尋址——內部區域寄存器間接尋址
內部區域寄存器間接尋址指針用于I、Q、M、L和數據塊等存儲器中的位、字節、字及雙字的尋址,與32位存儲器的使用方式相同,不同之處在于指針存儲的位置不同。內部區域寄存器地址指針格式如下所示:
第0位至第2位作為尋址操作的位地址,第3位至第18位作為尋址操作的字節地址,第19位至第30位沒有定義,第31位為內部區域與交叉區域指針標識符,0:內部區域指針,1:外部區域指針。
內部寄存器間接尋址格式:地址存儲器標識符[地址寄存器,P#BYTE.BIT]。
如:MW[AR1,P#4.0]或DIX[AR2,P#0.0]
MW:表示訪問的存儲器及訪問的長度,AR1:表示地址寄存器1,P#4.0為地址偏移量,
例如:
(3)寄存器尋址——交叉區域寄存器間接尋址
交叉區域寄存器尋址與內部區域寄存器尋址相比,地址指針中帶有存儲器標識符,如I、Q、M等,交叉區域地址指針格式如下:
第0位至第2位作為尋址操作的位地址,第3位至第18位作為尋址操作的字節地址,第24位至第26位為地址標識符,第31位為內部區域與交叉區域指針標識符,0:內部區域指針,1:外部區域指針。
地址標識符表示如下:
交叉區域寄存器尋址格式為:訪問寬度[地址寄存器,P#BYTE.BIT]。指針指向地址等于地址寄存器地址+地址偏移常量。
例如:
在S7-300中除了提供16位和32位存儲器地址指針和32位寄存器地址指針外,在程序的FC和FB的接口參數中,還提供了48位(pointer數據類型)和80位(ANY數據類型)的地址指針。16位和32位地址指針可以直接裝在到存儲器或地址寄存器中,從而可以在程序塊中使用間接尋址。“pointer”和“ANY”指針由于大于32位而不能裝在到存儲器或是寄存器中,所以不能在程序塊中直接使用,必須進行拆分使用,這兩種指針專用于功能(FC)和功能塊(FB)接口參數的傳遞。如調用函數賦值形參時,都實參的完全尋址。
責任編輯人:CC
-
寄存器
+關注
關注
31文章
5317瀏覽量
120004 -
S7-300
+關注
關注
8文章
225瀏覽量
34245 -
間接尋址
+關注
關注
0文章
19瀏覽量
8038
發布評論請先 登錄
相關推薦
評論