立即尋址方式可用來提供常數(shù)、設(shè)置初值等。常數(shù)值可分為字節(jié)、字、雙字型等數(shù)據(jù)。CPU以二進(jìn)制方式存儲(chǔ)所有常數(shù)。在指令中可用十進(jìn)制、十六進(jìn)制、ASCII碼或浮點(diǎn)數(shù)形式來表示操作數(shù)。
立即尋址示例:
SET 說明:把RLO置1
OW W#16#320 將常量W#16#320與ACCU1“或”運(yùn)算
L 1352 把整數(shù)1352裝入ACCU1
L‘ABCD’ 把ASCII碼字符ABCD裝入ACCU1
L C#100 把BCD碼常數(shù)100(計(jì)數(shù)值)裝入ACCU1
AW W#16#3A12 常數(shù)W316#3 A12與ACCU1的低位相“與”,運(yùn)算結(jié)果在ACCU1的低字中。 存儲(chǔ)器直接尋址包括對(duì)寄存器和存儲(chǔ)器的直接尋址。在直接尋址的指令中,直接給出操作數(shù)的存儲(chǔ)單元地址,包括寄存器或存儲(chǔ)器的區(qū)域、長度和位置,根據(jù)這個(gè)地址就可以立即找到該數(shù)據(jù)。例如,用MW200指定位存儲(chǔ)區(qū)中的字,地址為200;MB100表示以字節(jié)方式存取,MW100表示存取MB100、MB101組成的字,MD100表示存取MB100~ MB103組成的雙字。在指令中,數(shù)據(jù)類型應(yīng)與指令標(biāo)識(shí)符相匹配。
直接尋址編程示例:
A IO.0 說明:對(duì)輸入位10.0進(jìn)行“與”邏輯操作
S L20.0 把本地?cái)?shù)據(jù)位I20.0置“l”
= M115.4 使存儲(chǔ)區(qū)位M115.4的內(nèi)容等于RLO的內(nèi)容
L IB10 把輸入字節(jié)IB10的內(nèi)容裝入ACCU1
T DBD12 把ACCU1中的內(nèi)容傳送給數(shù)據(jù)雙字DBD12中。
存儲(chǔ)器間接尋址簡稱間接尋址。該尋址方式在指令中以存儲(chǔ)器的形式給出操作數(shù)所在存儲(chǔ)器單元的地址,也就是說該存儲(chǔ)器的內(nèi)容是操作數(shù)所在存儲(chǔ)器單元的地址。該存儲(chǔ)器一般稱為地址指針,在指令中需寫在方括號(hào)“[]”內(nèi)。地址指針可以是字或雙字。對(duì)于地址范圍小于65 535(即16位二進(jìn)制數(shù)所表示的最大值)的存儲(chǔ)器(如T、C、DB、FB、FC等)可以用字指針,其指針格式如圖所示。對(duì)于其他存儲(chǔ)器(如I、Q、M等)則要使用雙字指針。如果要用雙字指針訪問字節(jié)、字或雙字存儲(chǔ)器,必須保證指針的位編號(hào)為0,只有雙字MD、LD、DBD和DID能作雙字地址指針,存儲(chǔ)器間接尋址的雙字指針的格式如圖所示,位0~2(XXX)為被尋址位的位編號(hào)(范圍0~7),位3—l8為被尋址字節(jié)的字節(jié)編號(hào)(范圍0~65 535)。
圖 存儲(chǔ)器間接尋址的字指針格式
圖 存儲(chǔ)器間接尋址的雙字指針格式
存儲(chǔ)器間接尋址的單字格式的指針尋址示例:
L2 說明:將數(shù)字2#0000_0000_0000_0010裝入累加器1
T MW50 將累加器l低字中的內(nèi)容傳給MW50作為指針值
OPN DB35 打開共享數(shù)據(jù)塊DB35
L DBW[MW50] 將共享數(shù)據(jù)塊DBW2的內(nèi)容裝入累加器1
存儲(chǔ)器間接尋址的雙字格式的指針尋址示例:
上面程序中Q[MD2]中的MD2稱為地址指針,其里面的數(shù)值代表地址。
使用存儲(chǔ)器間接尋址,該存儲(chǔ)器的值是操作數(shù)的地址,因此改變了存儲(chǔ)器的值就相當(dāng)于改變了操作數(shù)的地址,在循環(huán)程序中經(jīng)常使用存儲(chǔ)器間接尋址。 寄存器間接尋址簡稱寄存器尋址。在S7中有兩個(gè)地址寄存器,分別是AR1和AR2。通過地址寄存器,可以對(duì)各存儲(chǔ)區(qū)的存儲(chǔ)器內(nèi)容實(shí)現(xiàn)寄存器間接尋址。地址寄存器的內(nèi)容加上偏移量形成地址指針,該指針指向數(shù)值所在的存儲(chǔ)單元。地址寄存器及偏移量必須寫在方括號(hào)“[]”內(nèi)。寄存器間接尋址的語句不改變地址寄存器中的數(shù)值。用寄存器指針訪問一個(gè)字節(jié)、字或雙字時(shí),必須保證地址指針中位地址編號(hào)為0。
地址寄存器的地址指針有兩種格式,其長度均為雙字,指針格式如圖所示。
圖 存儲(chǔ)器間接尋址的指針格式