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














