也正是雙字指針是一個具有位指針,"/>
西門子: | 西門子PLC總代理 |
西門子PLC: | 西門子PLC總代理商 |
德國: | 西門子PLC一級代理商 |
單價: | 面議 |
發(fā)貨期限: | 自買家付款之日起 天內(nèi)發(fā)貨 |
所在地: | 直轄市 上海 上海寶山 |
有效期至: | 長期有效 |
發(fā)布時間: | 2023-12-15 04:01 |
最后更新: | 2023-12-15 04:01 |
瀏覽次數(shù): | 113 |
采購咨詢: |
請賣家聯(lián)系我
|
單字指針存儲器間接尋址只能用址標(biāo)識符是非位場合;雙字指針有位格式存,對址標(biāo)識符沒有限制。也正是雙字指針是一個具有位指針,,當(dāng)對字節(jié)、字雙字存儲區(qū)址進行尋址時,必須確保雙字指針內(nèi)容是8倍數(shù)。
L L#+10 ,我們知道存放MD104中值應(yīng)該是:
當(dāng)作為雙字指針時,就應(yīng)該3-18bit定byte,0-2bit指bit來確定*終指令要操作址,:
詳解西門子間接尋址(二)
先前所說存儲器間接尋址中,間接指針用M、DB、DI和L直接指,就是說,指針指向存儲區(qū)內(nèi)容就是指令要執(zhí)行確切址數(shù)值單元。但寄存器間接尋址中,指令要執(zhí)行確切址數(shù)值單元,并非寄存器指向存儲區(qū)內(nèi)容,也就是說,寄存器本身也是間接指向真正址數(shù)值單元。從寄存器到出真正址數(shù)值單元,西門子提供了兩種途徑:
1、區(qū)域內(nèi)寄存器間接尋址
址寄存器間接尋址一般格式是:
〖寄存器,P#byte.bit〗統(tǒng)稱為:寄存器尋址指針,而〖址標(biāo)識符〗上帖中談過,它包含〖存儲區(qū)符〗+〖存儲區(qū)尺寸符〗。但這里,情況有所變化。比較一下剛才例子:
X [AR1,P#1.5]
DIX可以認為是我們通常定義址標(biāo)識符,DI是背景數(shù)據(jù)塊存儲區(qū)域,X是這個存儲區(qū)域尺寸符,指是背景數(shù)據(jù)塊中位。但下面一個示例中M呢?X定了存儲區(qū)域尺寸符,那么存儲區(qū)域符哪里呢?毫無疑問,AR1中!
DIX [AR1,P#1.5] 這個例子,要尋址址區(qū)域事先已經(jīng)確定,AR1可以改變這個區(qū)域內(nèi)確切址數(shù)值單元,我們稱之為:區(qū)域內(nèi)寄存器間接尋址方式,相應(yīng),這里[AR1,P#1.5] 就叫做區(qū)域內(nèi)尋址指針。
X [AR1,P#1.5] 這個例子,要尋址址區(qū)域和確切址數(shù)值單元,都未事先確定,確定了存儲大小,這就是意味著我們可以不同區(qū)域間不同址數(shù)值單元以給定區(qū)域大小進行尋址,稱之為:區(qū)域間寄存器間接尋址方式,相應(yīng),這里[AR1,P#1.5] 就叫做區(qū)域間尋址指針。
既然有著區(qū)域內(nèi)和區(qū)域間尋址之分,那么,同樣AR1中,就存有不同內(nèi)容,它們代表著不同含義。
址寄存器是專門用于尋址一個特殊指針區(qū)域,西門子址寄存器共有兩個:AR1和AR2,每個32位。
當(dāng)使用區(qū)域內(nèi)寄存器間接尋址中時,我們知道這時AR中內(nèi)容指明數(shù)值單元,,區(qū)域內(nèi)寄存器間接尋址時,寄存器中內(nèi)容等同于上帖中提及存儲器間接尋址中雙字指針,也就是:
AR:
這樣規(guī)定,就意味著AR取值只能是:0.0 ——65535.7
例如:當(dāng)AR=D4(hex)=0 0 (b),實際上就是等于26.4。
AR:
比較一下兩種格式不同,我們發(fā)現(xiàn),這里第31bit被固定為1,同時,第24、25、26位有了可以取值范圍。聰明你,肯定可以聯(lián)想到,這是用于定存儲區(qū)域。對,bit24-26取值確定了要尋址區(qū)域,它取值是這樣定義:
26、25、24位
000
001
010
011
100
101
111
當(dāng)是對P區(qū)域?qū)ぶ窌r,AR=800xxxxx
當(dāng)是對Q區(qū)域?qū)ぶ窌r,AR=820xxxxx
當(dāng)是對DB區(qū)域?qū)ぶ窌r,AR=840xxxxx
當(dāng)是對L區(qū)域?qū)ぶ窌r,AR=870xxxxx
列舉,我們有了初步結(jié)論:AR中內(nèi)容是8開頭,那么就一定是區(qū)域間尋址;要DB區(qū)中進行尋址,只需8后面跟上一個40。FFFFF指明了要尋址范圍是:
例如:當(dāng)AR=840000D4(hex)=1000 0100 0 0000 (b),實際上就是等于DBX26.4。
【P#指針】
● L P#Q1.0 //把Q1.0這個指針存入ACC1,此時ACC1內(nèi)容=82000008(hex)=Q1.0
● L P#MB100 //錯誤!必須byte.bit結(jié)構(gòu)給定指針。
● L P#DB100.DBX26.4 //錯誤!DBX已經(jīng)提供了存儲區(qū)域,不能重復(fù)定。
是區(qū)域內(nèi)區(qū)域間尋址,址所存儲區(qū)域都有了定,,這里P#XXX只能指純粹數(shù)值,如上面例子中★。