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