1.循環(huán)移位指令
右、左循環(huán)移位指令(d)ror(p)和(d)rol(p)編號(hào)分別為fnc30和fnc31。執(zhí)行這兩條指令時(shí),各位數(shù)據(jù)向右(或向左)循環(huán)移動(dòng)n位,最后一次移出來(lái)的那一位同時(shí)存入進(jìn)位標(biāo)志m8022中,如圖1所示。
圖1 右、左循環(huán)移位指令的使用
2.帶進(jìn)位的循環(huán)移位指令
帶進(jìn)位的循環(huán)右、左移位指令(d) rcr(p)和(d) rcl(p)編號(hào)分別為fnc32和fnc33。執(zhí)行這兩條指令時(shí),各位數(shù)據(jù)連同進(jìn)位(m8022)向右(或向左)循環(huán)移動(dòng)n位,如圖2所示。
圖2 帶進(jìn)位右、左循環(huán)移位指令的使用
使用ror/rol/rcr/rcl指令時(shí)應(yīng)該注意:
1)目標(biāo)操作數(shù)可取kny,knm,kns,t,c,d,v和z,目標(biāo)元件中指定位元件的組合只有在k4(16位)和k8(32位指令)時(shí)有效。
2)16位指令占5個(gè)程序步,32位指令占9個(gè)程序步。
3)用連續(xù)指令執(zhí)行時(shí),循環(huán)移位操作每個(gè)周期執(zhí)行一次。
3.位右移和位左移指令
位右、左移指令sftr(p)和sftl(p)的編號(hào)分別為fnc34和fnc35。它們使位元件中的狀態(tài)成組地向右(或向左)移動(dòng)。n1指定位元件的長(zhǎng)度,n2指定移位位數(shù),n1和n2的關(guān)系及范圍因機(jī)型不同而有差異,一般為n2≤n1≤1024。位右移指令使用如圖3所示。
圖3 位右移指令的使用
使用位右移和位左移指令時(shí)應(yīng)注意:
1)源操作數(shù)可?。?、y、m、s,目標(biāo)操作數(shù)可?。?、m、s。
2)只有16位操作,占9個(gè)程序步。
4.字右移和字左移指令
字右移和字左移指令wsfr(p)和wsfl(p)指令編號(hào)分別為fnc36和fnc37。字右移和字左移指令以字為單位,其工作的過(guò)程與位移位相似,是將n1個(gè)字右移或左移n2個(gè)字。
使用字右移和字左移指令時(shí)應(yīng)注意:
1)源操作數(shù)可取knx、kny、knm、kns、t、c和d,目標(biāo)操作數(shù)可取kny、knm、kns、t、c和d。
2)字移位指令只有16位操作,占用9個(gè)程序步.
3)n1和n2的關(guān)系為n2≤n1≤512。
5.先入先出寫(xiě)入和讀出指令
先入先出寫(xiě)入指令和先入先出寫(xiě)入讀出指令sfwr(p)和sfrd(p)的編號(hào)分別為fnc38和fnc39。
先入先出寫(xiě)入指令sfwr的使用如圖5所示, 當(dāng)x0由off變?yōu)閛n時(shí),sfwr執(zhí)行, d0中的數(shù)據(jù)寫(xiě)入d2,而d1變成指針,其值為1(d1必須先清0);當(dāng)x0再次由off變?yōu)閛n時(shí),d0中的數(shù)據(jù)寫(xiě)入d3,d1變?yōu)?,依次類推,d0中的數(shù)據(jù)依次寫(xiě)入數(shù)據(jù)寄存器。d0中的數(shù)據(jù)從右邊的d2順序存入,源數(shù)據(jù)寫(xiě)入的次數(shù)放在d1中,當(dāng)d1中的數(shù)達(dá)到n-1后不再執(zhí)行上述操作,同時(shí)進(jìn)位標(biāo)志m8022置1。
圖5 先入先出寫(xiě)入指令的使用
使用sfwr和sfrd指令時(shí)應(yīng)注意:
1)目標(biāo)操作數(shù)可取kny、knm、kns、t、c和d,源操數(shù)可取所有的數(shù)據(jù)類型。
2)指令只有16位運(yùn)算,占7個(gè)程序步。














