( 1 )功能指令編號: 功能指令按功能號 FNC00 ~ FNC246 來編號,如圖 中的 ①所示。
( 2 )助記符:功能指令的助記符是該指令的英文縮寫。如加法指令“ ADDITION ”簡寫為 ADD , 如圖(a) 中的 ②所示。
( 3 )數(shù)據(jù)長度:功能指令可按處理數(shù)據(jù)的長度分為 16 位指令和 32 位指令。其中 32 位指令用( D )表示,無( D )符號的為 16 位指令。圖( a )中③表示該指令為 32 位指令。
( 4 )執(zhí)行形式:功能指令有脈沖執(zhí)行型和連續(xù)執(zhí)行型兩種。指令中標(biāo)有( P )(圖 (a) 中的④所示)的為脈沖執(zhí)行型,在指令表示欄中用“ ”警示,如圖 ( a )中的⑤所示。脈沖執(zhí)行型指令在執(zhí)行條件滿足時(shí)僅執(zhí)行一個(gè)掃描周期,圖 (a) 中,當(dāng) X0 閉合時(shí),只在一個(gè)掃描周期中將加數(shù)( D11 、 D10 )和加數(shù)( D13 、 D12 )做一次加法運(yùn)算。連續(xù)執(zhí)行型如圖所示,在 X0 為 ON 的每個(gè)掃描周期都要被重復(fù)執(zhí)行加法運(yùn)算。在不需要每一個(gè)掃描周期都執(zhí)行時(shí),用脈沖執(zhí)行方式可縮短程序執(zhí)行時(shí)間。 XCH (數(shù)據(jù)交換)、 INC (加 1 )、 DEC (減 1 )等指令一般應(yīng)使用脈沖執(zhí)行方式,若用連續(xù)執(zhí)行時(shí)要特別注意,因?yàn)樵诿恳粋(gè)掃描周期內(nèi),其結(jié)果均在變化。
圖 連續(xù)執(zhí)行方式
( 5 )操作數(shù):操作數(shù)是功能指令 涉及或產(chǎn)生的數(shù)據(jù),如圖 (a) 中的⑥所示。它一般由 1 ~ 4 個(gè)操作數(shù)組成,但有的功能指令只有助記符和功能號而不需要操作數(shù)。操作數(shù)分為源操作數(shù)、目標(biāo)操作數(shù)和其它操作數(shù)。
[S] :源( Source )操作數(shù),其內(nèi)容不隨指令執(zhí)行而變化。使用變址功能時(shí),表示為 [S] 形式。源操作數(shù)不止一個(gè)時(shí),可用 [S1] 、 [S2] 等表示。
[D] :目標(biāo)( Destination )操作數(shù),其內(nèi)容隨執(zhí)行指令而改變。使用變址功能時(shí),表示為 [D] 形式。目標(biāo)操作數(shù)不止一個(gè)時(shí),可用 [D1] 、 [D2] 等表示。
[m] 與 [n] :表示其他操作數(shù)。常用來表示常數(shù)或作為源操作數(shù)和目標(biāo)操作數(shù)的補(bǔ)充說明。表示常數(shù)時(shí), K 表示十進(jìn)制, H 表示十六進(jìn)制,注釋可用 m1 、 m2 等表示。
功能指令的助記符占一個(gè)程序步,每個(gè)操作數(shù)占 2 個(gè)或 4 個(gè)程序步( 16 位操作數(shù)占 2 個(gè)程序步, 32 位操作數(shù)占 4 個(gè)程序步)。
操作數(shù)從根本上來說,是參加運(yùn)算的數(shù)據(jù)的地址。地址是依元件的類型分布在存儲(chǔ)區(qū)中。由于不同指令對參與操作的元件類型有一定的限制,因此操作數(shù)的取值就有一定的范圍,如圖 5.28(b) 所示的加法指令的操作數(shù)范圍。正確選取操作數(shù)類型,對正確使用指令有很重要的意義。
2. 功能指令的數(shù)據(jù)結(jié)構(gòu)
功能指令的操作數(shù)的數(shù)據(jù)長度有 16 位和 32 位兩種。構(gòu)成數(shù)據(jù)的方法如下:
( 1 )位元件與位元件的組合
只處理 ON/OFF 狀態(tài)的元件稱位元件,如 X 、 Y 、 M 、 S 。位元件 X 、 Y 、 M 、 S 等的組合也可以作為數(shù)值數(shù)據(jù)進(jìn)行處理。將這些位元件組合,以 KnP 的形式表示,每組由 4 個(gè)連續(xù)的位元件組成, P 為位元件的首地址, n 為組數(shù)( n = 1 ~ 8 )。 4 個(gè)單元 K4 組成 16 位操作數(shù),如 K 4M 10 表示由 M10~M15 組成的 16 位數(shù)據(jù)。
當(dāng)一個(gè) 16 位數(shù)據(jù)傳送到 K 1M 0 、 K 2M 0 、 K 3M 0 時(shí),只傳送相應(yīng)的低位數(shù)據(jù),高位數(shù)據(jù)溢出。
在處理一個(gè) 16 位操作數(shù)時(shí),參與操作的元件由 K1 ~ K4 指定。若僅由 K1 ~ K3 指定,不足部分的高位作 0 處理,這意味著只能處理正數(shù)(符號位為 0 )。
被組合的位元件的首元件號可以是任意的,習(xí)慣采用以 0 結(jié)尾的元件,如 M0 , M100 等。
如圖 (b) 所示,功能指令中的操作數(shù)可能取 K (十進(jìn)制常數(shù))、 H (十六進(jìn)制常數(shù))、 KnX 、 KnY 、 KnM 、 KnS 、 T 、 C 、 D 、 V 、 Z 。
( 2 )字元件
處理數(shù)據(jù)的元件稱為字元件,如 T 和 C 的設(shè)定值寄存器、當(dāng)前值寄存器和數(shù)據(jù)寄存器 D 等,一個(gè)字由 16 個(gè)二進(jìn)制位組成。處理 32 位數(shù)據(jù)時(shí),功能指令中用符號 D 表示,如圖 5.29 中的( D ) ADD D10 D12 D14 ,這時(shí)相鄰的兩個(gè)數(shù)據(jù)寄存器組成數(shù)據(jù)寄存器對,該指令將 D11 和 D10 中的數(shù)據(jù)與 D13 和 D12 中的數(shù)據(jù)相加的和傳送到 D15 和 D14 中去, D10 中為低 16 位數(shù)據(jù), D11 中為高 16 位數(shù)據(jù),為了避免出現(xiàn)錯(cuò)誤,建議首地址統(tǒng)一用偶數(shù)編號。指令前面沒有 D 時(shí)表示 16 位數(shù)據(jù)。 32 位計(jì)數(shù)器 C200 ~ C255 不能用作 16 位指令的操作數(shù)。
變址寄存器在傳送、比較指令中用來修改操作對象的元件號,其操作方式與普通數(shù)據(jù)寄存器一樣。當(dāng)操作數(shù)據(jù)是 32 位時(shí), V 作高 16 位, Z 作低 16 位。