在STEP7中可以對(duì)整數(shù)、長(zhǎng)整數(shù)和實(shí)數(shù)進(jìn)行加、減、乘、除算術(shù)運(yùn)算。算術(shù)運(yùn)算指令在累加器1和2中進(jìn)行,在累加器2中的值作為被減數(shù)或被除數(shù)。算術(shù)運(yùn)算的結(jié)果保存在累加器1中,累加器1原有的值被運(yùn)算結(jié)果覆蓋,累加器2中的值保持不變。CPU在進(jìn)行算術(shù)運(yùn)算時(shí),對(duì)RLO不產(chǎn)生影響。然而算術(shù)運(yùn)算指令對(duì)狀態(tài)字的CC1和CC0、OV、OS位產(chǎn)生影響。可以用位操作指令或條件跳轉(zhuǎn)指令,對(duì)狀態(tài)字中的標(biāo)志位進(jìn)行判斷操作。
1.整數(shù)算術(shù)運(yùn)算
整數(shù)算術(shù)運(yùn)算指令包括:
指令“+I”:將累加器1、2低字中的16位整數(shù)相加,16位整數(shù)結(jié)果保存在累加器1低字中。
指令“-I”:將累加器2低字中的16位整數(shù)減去累加器1低字中的內(nèi)容.結(jié)果保存在累加器1中。
指令“*I”:將累加器1、2低字中的16位整數(shù)相乘,結(jié)果為32位整數(shù)保存在累加器1中。
指令“/I”:將累加器2低字中的16位整數(shù)除去累加器1低字中的內(nèi)容,商為16位整數(shù)并保存在累加器1低字中,余數(shù)存放在累加器1高字中。
指令“+D”:將累加器1、2中的32位整數(shù)相加,32位整數(shù)結(jié)果保存在累加器1中。
指令“-D”:將累加器2中的32位整數(shù)減去累加器1中的內(nèi)容,結(jié)果保存在累加器1中。
指令“*D”:將累加器1、2中的32位整數(shù)相乘,結(jié)果為32位整數(shù)保存在累加器1中。
指令“/D”:將累加器2中的32位整數(shù)除以累加器1中的內(nèi)容,商為32位整數(shù)并保存在累加器1中.余數(shù)被忽略。
指令“MOD”:將累加器2中的32位整數(shù)除以累加器1中的內(nèi)容,余數(shù)保存在累加器1中,商被忽略。
指令“+”:累加器1中加一個(gè)16位或2位整數(shù)常量,結(jié)果保存在累加器中。
2.實(shí)數(shù)算術(shù)運(yùn)算
實(shí)數(shù)算術(shù)運(yùn)算指令包括:
指令“+R”:將累加器1、2中的32位實(shí)數(shù)相加,32位結(jié)果保存在累加器1中。
指令“-R”:將累加器2中的32位實(shí)數(shù)減去累加器1中的內(nèi)容,結(jié)果保存在累加器1中。
指令“*R”:將累加器1、2中的32位實(shí)數(shù)相乘,32位乘積保存在累加器1中。
指令“/R”:將累加器2中的32位實(shí)數(shù)除去累加器l的內(nèi)容,32位的商并保存在累加器中。
指令“ABS”:對(duì)累加器]中的32位實(shí)數(shù)取絕對(duì)值。
3.梯形圖算術(shù)運(yùn)算方塊指令
以上介紹的語(yǔ)句表運(yùn)算指令,都有對(duì)應(yīng)的梯形圖方塊指令。在編程器上,使用梯形圖指令瀏覽器,可以選擇需要的方塊指令。下面舉例說(shuō)明算術(shù)方塊指令的用法。
【例5-5】 編寫實(shí)現(xiàn)MD4= (IW0+DBW3)×15/MD 0運(yùn)算的程序。
【解】 圖5-18給出了一個(gè)實(shí)現(xiàn)上述運(yùn)算的梯形圖程序。
圖5-18 算術(shù)運(yùn)算方塊指令
實(shí)現(xiàn)相同運(yùn)算的語(yǔ)句程序如下:
L IW 0 ∥將輸入字IW0的內(nèi)容裝入累加器1
L DBW 3 ∥將數(shù)據(jù)字DBW3的內(nèi)容裝入累加器1中,累加器1原內(nèi)容裝入累加器2中
+I ∥累加器2與累加器1相加,結(jié)果存入累加器1中
L +15 ∥將常數(shù)15裝入累加器1,累加器1原內(nèi)容裝入累加器2
*I ∥累加器2與累加器1相乘,結(jié)果為長(zhǎng)整數(shù)在累加器1中
L MD 0 ∥將存儲(chǔ)雙字MD 0的內(nèi)容裝入累加器1,累加器1原內(nèi)容裝入累加器2
/I ∥累加器2除累加器1,結(jié)果的整數(shù)部分在累加器1中
T MD 4 ∥將運(yùn)算結(jié)果傳送至存儲(chǔ)雙字MD4