MW型整數(shù)的絕對(duì)值指令有嗎?
劉玉蓉
發(fā)布于2014-10-23 17:58
24
0
標(biāo)簽:
16位整數(shù)的絕對(duì)值指令有嗎?
我知道32位浮點(diǎn)數(shù)有絕對(duì)值指令的,但是MW卻沒(méi)有找到。
佳答案
16位整數(shù)的絕對(duì)值指令有嗎?
沒(méi)有16位整數(shù)的絕對(duì)值指令??梢宰约壕帉?xiě),設(shè)A為一16位整數(shù),其高位為符號(hào)位。負(fù)數(shù)用補(bǔ)碼表示(高位是符號(hào)位,其余位為數(shù)字的原碼取反+1 )
求A的絕對(duì)值方法:
1、判斷A是否大于對(duì)于0,即為正數(shù),還是為負(fù)數(shù)。
2、如為正數(shù),絕對(duì)值就是其本身;
3、如為負(fù)數(shù),即已知負(fù)數(shù)A,應(yīng)用NEGI 對(duì)整數(shù)求補(bǔ)碼(16 位)指令。
NEGI 對(duì)整數(shù)求補(bǔ)碼(16 位):
使用對(duì)整數(shù)求補(bǔ)碼指令( NEGI),可以對(duì)累加器 1 低字中的 16 位數(shù)值求補(bǔ)碼。
求補(bǔ)碼指令為逐位轉(zhuǎn)換,即“0”變?yōu)椤?”,“1”變?yōu)椤?”;然后對(duì)累加器中的內(nèi)容加“1”。轉(zhuǎn)換結(jié)果保存在累加器 1 的低字中。求補(bǔ)碼指令相當(dāng)于該數(shù)乘以“-1”。
例如16位整數(shù)FFFFH表示為-1,其取反后加1后得1.即-1乘以“-1”得1.
隨手寫(xiě)了一段,未加實(shí)際運(yùn)行,僅供參考:
L MW10//取16位整數(shù)
L 0//取常數(shù)0
>=I
JC M001//若 RLO = 1,則跳轉(zhuǎn),即如大于等于0(正數(shù))跳到M001
L MW10
NEGI//如為負(fù)數(shù),則乘以-1,即取絕對(duì)值。
M001:T MW10//保存結(jié)果。
相關(guān)文檔:
《用于S7-300 和S7-400 的語(yǔ)句表(STL)編程手冊(cè)》下載:
https://www2.ad.siemens.com.cn/download/Upload/AS/manual/1008[1].pdf