1. 功能指令的通用格式
( 1 )功能指令編號(hào): 功能指令按功能號(hào) fnc00 ~ fnc246 來(lái)編號(hào),如圖 中的 ①所示。
( 2 )助記符:功能指令的助記符是該指令的英文縮寫。如加法指令“ addition ”簡(jiǎn)寫為 add , 如圖(a) 中的 ②所示。
( 3 )數(shù)據(jù)長(zhǎng)度:功能指令可按處理數(shù)據(jù)的長(zhǎng)度分為 16 位指令和 32 位指令。其中 32 位指令用( d )表示,無(wú)( d )符號(hào)的為 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ù)組成,但有的功能指令只有助記符和功能號(hào)而不需要操作數(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ù)。常用來(lái)表示常數(shù)或作為源操作數(shù)和目標(biāo)操作數(shù)的補(bǔ)充說(shuō)明。表示常數(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ù)從根本上來(lái)說(shuō),是參加運(yùn)算的數(shù)據(jù)的地址。地址是依元件的類型分布在存儲(chǔ)區(qū)中。由于不同指令對(duì)參與操作的元件類型有一定的限制,因此操作數(shù)的取值就有一定的范圍,如圖 5.28(b) 所示的加法指令的操作數(shù)范圍。正確選取操作數(shù)類型,對(duì)正確使用指令有很重要的意義。
2. 功能指令的數(shù)據(jù)結(jié)構(gòu)
功能指令的操作數(shù)的數(shù)據(jù)長(zhǎng)度有 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ù)(符號(hào)位為 0 )。
被組合的位元件的首元件號(hào)可以是任意的,習(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í),功能指令中用符號(hào) d 表示,如圖 5.29 中的( d ) add d10 d12 d14 ,這時(shí)相鄰的兩個(gè)數(shù)據(jù)寄存器組成數(shù)據(jù)寄存器對(duì),該指令將 d11 和 d10 中的數(shù)據(jù)與 d13 和 d12 中的數(shù)據(jù)相加的和傳送到 d15 和 d14 中去, d10 中為低 16 位數(shù)據(jù), d11 中為高 16 位數(shù)據(jù),為了避免出現(xiàn)錯(cuò)誤,建議首地址統(tǒng)一用偶數(shù)編號(hào)。指令前面沒(méi)有 d 時(shí)表示 16 位數(shù)據(jù)。 32 位計(jì)數(shù)器 c200 ~ c255 不能用作 16 位指令的操作數(shù)。
變址寄存器在傳送、比較指令中用來(lái)修改操作對(duì)象的元件號(hào),其操作方式與普通數(shù)據(jù)寄存器一樣。當(dāng)操作數(shù)據(jù)是 32 位時(shí), v 作高 16 位, z 作低 16 位。