也正是雙字指針是一個(gè)具有位指針,,"/>
西門子: | 西門子PLC總代理 |
西門子PLC: | 西門子PLC總代理商 |
德國(guó): | 西門子PLC一級(jí)代理商 |
單價(jià): | 面議 |
發(fā)貨期限: | 自買家付款之日起 天內(nèi)發(fā)貨 |
所在地: | 直轄市 上海 上海寶山 |
有效期至: | 長(zhǎng)期有效 |
發(fā)布時(shí)間: | 2023-12-15 04:01 |
最后更新: | 2023-12-15 04:01 |
瀏覽次數(shù): | 126 |
采購(gòu)咨詢: |
請(qǐng)賣家聯(lián)系我
|
單字指針存儲(chǔ)器間接尋址只能用址標(biāo)識(shí)符是非位場(chǎng)合,;雙字指針有位格式存,對(duì)址標(biāo)識(shí)符沒(méi)有限制,。也正是雙字指針是一個(gè)具有位指針,,,當(dāng)對(duì)字節(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來(lái)確定*終指令要操作址,,:
詳解西門子間接尋址(二)
先前所說(shuō)存儲(chǔ)器間接尋址中,,間接指針用M、DB,、DI和L直接指,,就是說(shuō),,指針指向存儲(chǔ)區(qū)內(nèi)容就是指令要執(zhí)行確切址數(shù)值單元。但寄存器間接尋址中,,指令要執(zhí)行確切址數(shù)值單元,,并非寄存器指向存儲(chǔ)區(qū)內(nèi)容,也就是說(shuō),,寄存器本身也是間接指向真正址數(shù)值單元,。從寄存器到出真正址數(shù)值單元,,西門子提供了兩種途徑:
1,、區(qū)域內(nèi)寄存器間接尋址
址寄存器間接尋址一般格式是:
〖寄存器,P#byte.bit〗統(tǒng)稱為:寄存器尋址指針,而〖址標(biāo)識(shí)符〗上帖中談過(guò),,它包含〖存儲(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ū)域符哪里呢,?毫無(wú)疑問(wèn),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,同時(shí),,第24,、25、26位有了可以取值范圍,。聰明你,,肯定可以聯(lián)想到,這是用于定存儲(chǔ)區(qū)域,。對(duì),,bit24-26取值確定了要尋址區(qū)域,它取值是這樣定義:
26,、25,、24位
000
001
010
011
100
101
111
當(dāng)是對(duì)P區(qū)域?qū)ぶ窌r(shí),AR=800xxxxx
當(dāng)是對(duì)Q區(qū)域?qū)ぶ窌r(shí),,AR=820xxxxx
當(dāng)是對(duì)DB區(qū)域?qū)ぶ窌r(shí),,AR=840xxxxx
當(dāng)是對(duì)L區(qū)域?qū)ぶ窌r(shí),AR=870xxxxx
列舉,,我們有了初步結(jié)論: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#XXX只能指純粹數(shù)值,,如上面例子中★,。