STL編程循環(huán)及指針的問(wèn)題
劉玉蓉
發(fā)布于2014-11-28 17:52
3
0
標(biāo)簽:
一段STL編輯的程序,只看懂了大概意思是將狀態(tài)位M賦值給DB塊,但為什么要使用SRW 1(卻不直接賦值一個(gè)合適的數(shù)),及循環(huán)多少遍不太確定(自己分析為(1023-400)次),請(qǐng)大家?guī)兔纯?其中(#INO=200,#IN1=35)
L #IN1
T #TEMP2
OPN DB [#TEMP2]
L P#0.0
LAR1
L #IN0
SRW 1
L 1023
>I
JC M002
TAK
M001: T #TEMP3
L MW [AR1,P#2.0]
T DBW [AR1,P#2.0]
+AR1 P#2.0
L #TEMP3
LOOP M001
M002: NOP 0
問(wèn)題補(bǔ)充:
按樓上的回答,如果循環(huán)100次,循環(huán)的結(jié)果是不是將M102.0-M201.9狀態(tài)值放到了數(shù)據(jù)塊DB35中,地址為DB35.DB2.0-DB35.DB101.9中
佳答案
可以看下下面的解釋
L #IN1
T #TEMP2
OPN DB [#TEMP2]
L P#0.0
LAR1
L #IN0 裝載 #IN0 即200至地址累加器1
SRW 1 右移位相當(dāng)于把200乘以2即400
L 1023 裝載累加器1的內(nèi)容至累加器2(即#IN0 ,400)并把1023累加器1
>I
JC M002 累加器2的內(nèi)容(即#IN0 ,400)大于累加器1(1023)剛跳轉(zhuǎn)到M002
TAK 若 累加器2的內(nèi)容不大于累加器1則交換累加器1的累加器2的內(nèi)容
M001: T #TEMP3 把累加器1的內(nèi)容傳送到 #TEMP3(即循環(huán)次數(shù))
L MW [AR1,P#2.0]
T DBW [AR1,P#2.0]
+AR1 P#2.0
L #TEMP3
LOOP M001
M002: NOP 0
從這段程序可以看出#IN0 乘以2的結(jié)果大于1023時(shí)跳過(guò)程序,不循環(huán),若不大于即小于等于時(shí),
則按#IN0 乘以2的次數(shù)進(jìn)行循環(huán).本例為400