時間:2019-07-22 14:00:49來源:網絡
直接尋址
直接的指出指令的確切操作地址。例如AQ10.0,對于指令A來說,Q10.0就是其直接操作的地址。
因此,相對的,間接尋址即間接的指出指令的確切操作地址。例如AQ[MD10],這里的地址不是直接給出的,而是通過MD10這個存儲地址間接給出的。
間接尋址的類型
間接尋址可分為兩大類型:存儲器間接尋址和寄存器間接尋址。如圖1所示。
圖1尋址方式
存儲器間接尋址
存儲器間接尋址的地址給定格式是:地址標識符+指針。指針所指示存儲單元中所包含的數值,就是地址的確切數值單元。
存儲器間接尋址分為兩種指針格式:
16位指針:
16位地址指針用于定時器、計數器、程序塊(DB、FC、FB)的尋址,16位指針被看作一個無符號整數(0-65535),它表示定時器(T)、計數器(C)、數據塊(DB、DI)或程序塊(FB、FC)的號,16位指針的格式如下:
圖216位指針格式
32位指針:
32位地址指針用于I、Q、M、L、數據塊等存儲器中位、字節、字及雙字的尋址,32位的地址指針可以使用一個雙字表示,第0位~第2位作為尋址操作的位地址,第3位~第18位作為尋址操作的字節地址,第19位~第31位沒有定義,32位指針的格式如下:
圖332位指針格式
寄存器間接尋址
寄存器間接尋址為通過CPU的地址寄存器AR1,AR2進行尋址。AR1,AR2均為32位寄存器,寄存器間接尋址只使用32位指針。
分為內部區域間接尋址和交叉區域尋址。
內部區域寄存器間接尋址
指針格式與存儲器間接尋址的32位指針相同,第0位~第2位作為尋址操作的位地址,第3位~第18位作為尋址操作的字節地址,第19位~第31位沒有定義,32位指針的格式如下:
圖4內部區域32位指針
交叉區域寄存器間接尋址
包含有存儲器區域信息的指針,稱為交叉區域指針。
同樣,交叉區域指針為32位,寄存器間接尋址要使用地址寄存器AR1或AR2。
32位交叉區域指針,左起0~18位格式與32位內部區域指針相同,19~23位,27~20位未定義,
31位為交叉區域指針標識位。
24~26位是存儲區域地址標識,8中組合表示8種存儲器區域:
000表示沒有地址區,例如P#12.0;
001表示輸入地址區I,例如P#I12.0;
010表示輸出地址區Q,例如P#Q12.0;
011表示標志位地址區M,例如P#M12.0;
100表示數據塊(DB)中的數據,例如P#DB1.DBX12.0
101表示數據塊(DI)中的數據,例如P#DI1.DIX12.0
110表示區域地址區L,例如P#L12.0;
111表示調用程序塊的區域地址區V,例如P#V12.0;
交叉區域指針格式如下:
P#指針與ANY指針
P#指針
POINTER是一種用于傳遞指針的形參數據類型,長度為6個字節。用于向被調用的函數FC及函數塊FB傳遞復合數據類型(如ARRAY、STRUCT及DT等)的實參。在被調用的函數FC及函數塊FB內部可以間接訪問實參的存儲器。
圖6P#指針
ANY指針
POINTER是一種用于傳遞指針的形參數據類型,可視為POINTER類型的擴展,較POINTER類型為復雜,長度為10個字節,增加的2字節,最高字節(Byte0)固定為B#16#10,第二字節(Byte1)為ANY指針所指向區域的數據類型,而接下來的2字節(BYTE3,4)組合為一個INT,為ANY指針所指定區域的長度,稱為重復系數Repetitionfactor)。其余6字節作用與POINTER類型相同。格式如下:
圖7ANY指針
聲明:本文為轉載類文章,如涉及版權問題,請及時聯系我們刪除(QQ: 2737591964),不便之處,敬請諒解!
標簽:
上一篇:圖爾克地毯清洗監控方案
下一篇:一文了解大規格電機轉子的動...
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.siyutn.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-06-06
2025-05-19
2025-04-30
2025-04-11
2025-04-08
2025-03-31