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