西門子NCU送電后數(shù)字亂跳維修
移位功能是將累加器1中的內(nèi)容一位一位地左移或右移,累加器中的內(nèi)容既可是字也可是雙字。被移出的位既可丟掉(移位操作)也可加在字或雙字的另一邊(循環(huán)操作)。移位功能不影響其他累加器。
執(zhí)行移位功能與其他條件無(wú)關(guān),只影響累加器1中的內(nèi)容。RLO不受影響。
移位功能有兩種編程方式:
●累加器2中帶有移位數(shù)
●移位數(shù)作為參數(shù)
用兩種方法之一實(shí)現(xiàn)一個(gè)字邏輯操作的編程如下:
移位功能置狀態(tài)位CC0為“0”,置狀態(tài)位CC1為移出的后一位的信號(hào)狀態(tài)(如圖13-1所示)。狀態(tài)位由二進(jìn)制檢測(cè)或轉(zhuǎn)移指令判斷。
表13-2所示為移位功能的幾個(gè)例子。一個(gè)字移位僅僅改變累加器1的低階字,高階字的內(nèi)容不受影響,循環(huán)通過(guò)狀態(tài)位CC1把累加器的內(nèi)容移位一位。
連續(xù)的移位功能
移位功能可以經(jīng)常應(yīng)用到累加器的內(nèi)容中。
例如:
L Value1;
SSD 4;
SLD 2;
T Result1;
上例中帶有符號(hào)的數(shù)值向右移動(dòng)了兩位,從而右邊的兩位置成“0”。
其他轉(zhuǎn)換功能如下:
●INVI 整型數(shù)的反碼
●INVD 雙整型數(shù)的反碼
●NEGI 整型數(shù)的非(補(bǔ)碼)
●NEGD 雙整型數(shù)的非(補(bǔ)碼)
●NEGR 實(shí)型數(shù)的非(反數(shù))
●ABS 實(shí)型數(shù)的值
1.整型數(shù)的反碼
INVI語(yǔ)句是將累加器1中的低階字按位取反(0~15位),INVI用1代替0,或與之相反。高階字(16~31位)內(nèi)容保持不變。
INVI語(yǔ)句不置狀態(tài)位。
2.雙整型數(shù)的反碼
INVD語(yǔ)句是將累加器1中數(shù)字按位取反,INVD用1代替0,或與之相反。
INVD語(yǔ)句不置狀態(tài)位。
3.整型數(shù)的補(bǔ)碼
NEGI功能是將累加器1中的低階字的數(shù)字(0~15位)譯碼成整型數(shù),通過(guò)補(bǔ)碼改變符號(hào),NEGI與乘-1結(jié)果相同。高階字(16~31位)內(nèi)容保持不變。
NEGI語(yǔ)句將狀態(tài)位CC0、CC1、OV和OS設(shè)置為“1”。
4.雙整型數(shù)的補(bǔ)碼
NEGD語(yǔ)句是將累加器l中的數(shù)字譯碼成雙整型數(shù),通過(guò)補(bǔ)碼改變符號(hào),NEGD與乘-1結(jié)果相同。
NEGD語(yǔ)句將狀態(tài)位CC0、CC1、OV和OS設(shè)置為“1”。
5.實(shí)型數(shù)的非
NEGR語(yǔ)句是將累加器1中的數(shù)字譯碼成實(shí)型數(shù)并乘-1。即使累加器1中的數(shù)字不是一個(gè)有效的實(shí)數(shù),NEGR也改變尾數(shù)(mantissa)的符號(hào)。
NEGR語(yǔ)句不置狀態(tài)位。
6.實(shí)數(shù)的值
ABS語(yǔ)句是將累加器1中的數(shù)字譯碼成實(shí)型數(shù),并生成值。即使累加器1中的數(shù)字是一個(gè)無(wú)效實(shí)數(shù),ABS也會(huì)將一個(gè)尾數(shù)的符號(hào)設(shè)置為“0”。
ABS語(yǔ)句不置狀態(tài)位。
●RND+ 取整為一個(gè)較大的整型數(shù)
●RND- 取整為一個(gè)較小的整型數(shù)
●RND 取整為接近的整型數(shù)
●TRUNC 去尾取整
1.取整為一個(gè)較大的整型數(shù)
RND+語(yǔ)句的功能是將累加器1中的數(shù)字譯碼為實(shí)型數(shù),然后轉(zhuǎn)換為一個(gè)雙整型數(shù)。RND+語(yǔ)句返回一個(gè)整型數(shù),該整型數(shù)大干或等于被轉(zhuǎn)換的數(shù)。
如果累加器1中的數(shù)字超過(guò)或低于雙整型數(shù)規(guī)定的范圍,或者不是實(shí)型數(shù),RND+將把OV和OS位置位,而且不進(jìn)行數(shù)的轉(zhuǎn)換。
2.取整為一個(gè)較小的整型數(shù)
RND-語(yǔ)句的功能是將累加器1中的數(shù)字譯碼為實(shí)型數(shù),然后轉(zhuǎn)換為一個(gè)雙整型數(shù)。RND-語(yǔ)句返回一個(gè)整型數(shù),該整型數(shù)小于或等于被轉(zhuǎn)換的數(shù)。
如果累加器1中的數(shù)字超過(guò)或低于雙整型數(shù)規(guī)定的范圍,或者不是實(shí)型數(shù),RND-將把狀態(tài)位OV和OS置位,而且不進(jìn)行數(shù)的轉(zhuǎn)換。
3.取整為接近的整型數(shù)
RND的功能是將累加器1中的數(shù)字譯碼為實(shí)型數(shù),然后轉(zhuǎn)換為一個(gè)雙整型數(shù)。RND語(yǔ)句返回一個(gè)整型數(shù),該整型數(shù)是接近被轉(zhuǎn)換數(shù)的整型數(shù)。如果轉(zhuǎn)換結(jié)果剛好在兩個(gè)相鄰的整型數(shù)之間,則選擇偶數(shù)為轉(zhuǎn)換結(jié)果。
如果累加器1中的數(shù)字超過(guò)或低于雙整型數(shù)規(guī)定的范圍,或者不是實(shí)型數(shù),RND將把狀態(tài)位OV和OS置位,而且不進(jìn)行數(shù)的轉(zhuǎn)換。
4.去尾取整的轉(zhuǎn)換
TRUNC的功能是將累加器1中的數(shù)字譯碼為實(shí)型數(shù),然后轉(zhuǎn)換為一個(gè)雙整型數(shù)。TRUNC返回一個(gè)被轉(zhuǎn)換實(shí)型數(shù)的整數(shù)部分,舍去小數(shù)部分。
如果累加器1中的數(shù)字超過(guò)或低于雙整型數(shù)規(guī)定的范圍,或者不是實(shí)型數(shù),TRUNC將把狀態(tài)位OV和OS置位,而且不進(jìn)行數(shù)的轉(zhuǎn)換。
BCD的轉(zhuǎn)換功能如下:
●BTI BCD碼到整型數(shù)的轉(zhuǎn)換
●BTD BCD碼到雙整型數(shù)的轉(zhuǎn)換
1.BCD碼到整型數(shù)的轉(zhuǎn)換
BTI語(yǔ)句的功能是將累加器1中的低階字(0~15位)作為3位BCD碼譯碼,在累加器1中3個(gè)十進(jìn)制數(shù)是右側(cè)對(duì)齊的數(shù)碼,且代表十進(jìn)制數(shù)的值。12~15位是符號(hào)位。若符號(hào)位都是“0”,則是正數(shù);若符號(hào)位都是“1”,則是負(fù)數(shù)。在轉(zhuǎn)換中只考慮到第15位,累加器1中的高階字(16~31位)的內(nèi)容保持不變。
如果BCD碼中包含偽4位二進(jìn)制數(shù)(數(shù)值10~15或十六進(jìn)制A~F),CPU發(fā)出參數(shù)錯(cuò)誤信號(hào),并且調(diào)用組織塊OB 121(同步錯(cuò)誤)。如果組織塊OB 121還未被編程,CPU進(jìn)入STOP方式。
BTI語(yǔ)句不設(shè)置狀態(tài)位。
2.BCD碼到雙整型數(shù)的轉(zhuǎn)換
BTD語(yǔ)句的功能是將累加器1中的數(shù)字作為7位BCD碼譯碼,在累加器1中這7個(gè)十進(jìn)制數(shù)是右側(cè)對(duì)齊的,且代表十進(jìn)制數(shù)的值。28~31位是符號(hào)位。若符號(hào)位都是“0”,則是正數(shù);若符號(hào)位都是“1”,則是負(fù)數(shù)。在轉(zhuǎn)換中只考慮到第31位。
如果BCD碼中包含偽4位二進(jìn)制數(shù)(數(shù)值10~15或十六進(jìn)制A~F),則CPU發(fā)出參數(shù)錯(cuò)誤信號(hào),并且調(diào)用組織塊OB 121(同步錯(cuò)誤)。如果組織塊OB 121是無(wú)效的,CPU進(jìn)入STOP方式。
BTD語(yǔ)句不設(shè)置狀態(tài)位。
西門子NCU送電后數(shù)字亂跳維修