引用
引用第523樓hhjauto于2009-12-25 22:43發(fā)表的 樓上的問題,哪位大俠幫忙解答下?萬分感謝 :
就我的理解,將P#DBX byte.bit裝入到32位指針中,指針的內(nèi)容為1000_0100_0000_0BBB_BBBB_BBBB_BBBB_BXXX。而若是將這樣的2個(gè)32位指針相加,那么第25、26、27位是否一樣地也相加呢??則相加的結(jié)果是否會導(dǎo)致尋址不再指向DBX了??然而別人程序就是這么編的應(yīng)該是沒錯(cuò)的,有點(diǎn)想不通。我是新手,剛接觸S7300,望前輩或是明白人給予指點(diǎn),感激不盡。
這個(gè)編程我覺得有點(diǎn)不嚴(yán)謹(jǐn),有可能會有莫名的問題。
首先要肯定你的理解是正確的,兩個(gè)雙字相加,是沒有那個(gè)位被放棄的,正如你說的25、26、27位也是相加。而這程序之所以出現(xiàn)正確結(jié)果是因?yàn)椋核褂玫氖谴鎯ζ鏖g接尋址,而該尋址類型都是區(qū)域內(nèi)間接尋址,也就說1000_0100_0000_0BBB_BBBB_BBBB_BBBB_BXXX,比B高的位都是無效的,原則上是應(yīng)該給清零的,以免出現(xiàn)不必要的麻煩。
就本程序而言,只有位號和字節(jié)號有效,高位也是相加只是無效,,因此你所說的區(qū)域代碼DBX DIX等就是無用的,所以編程的結(jié)果的會出現(xiàn)對的,但是建議把高位都清零,因此這個(gè)編程是不嚴(yán)謹(jǐn)?shù)摹?br />還有就是要會利用仿真監(jiān)控,你可以監(jiān)視累加器,地址寄存器,狀態(tài)字等等,很容易能看出來到底高位有沒有變化。