| SMOV ストリング命令 <<L1R>>、<<L1>>、<<L2>> |
【ニモニックとオペランド】
SMOV
【機能】
Move a string
ストリングを転送
【オプション】
/F アドレス増加方向に処理 /B アドレス減少方向に処理 /ee 割出し条件(以下の表からニモニック名を取ります)
【命令フォーマットと表記法】
R0 :srcストリングの先頭アドレス R1 :destストリングの先頭アドレス R2 :エレメント数 R3 :割出し条件の比較値
【解説】
SMOV命令はsrcのストリングをdestのストリングに転送します。
転送は要素単位で行われ、毎回転送後に各要素を汎用レジスタR3の値に対して検査します。割出し条件が満たされると、命令は終了します。どの要素も割出し条件を満たさないときには、 R2に示される数の要素が転送されます。
割出し条件が満たされた時点で指定要素数が転送された場合、R2は0で、F_flagがセットされます。転送の結果は割出し条件が満たされないときの指定要素数の終了の場合と同一です。
実行中に外部割込みを受け付けたときには、レジスタの内容が処理が完了した点まで更新されます。
srcのストリングがdestのストリングと重なるときに以下のオプションを指定する場合、結果はインプリメントに依存します。
- R1がR0よりも大きいときに/Fを指定した場合
- R0がR1よりも大きいときに/Bを指定した場合
・アドレス増加方向の処理
R0とR1の内容はsrcとdestのストリングのアドレスを示し、要素が転送されるつど要素サイズだけ増加します。命令が終了したとき、それぞれの内容は最後に転送された要素のアドレスに要素サイズを加えたアドレスを示します。
R2の内容は転送のつど1だけ減少します。
・アドレス減少方向の処理
R0とR1の内容は、srcとdestのストリングのアドレスを示し、要素が転送されるつど要素サイズだけ減少します。命令が終了したとき、それぞれの内容は最後に転送された要素のアドレスを示します。
R2の内容は転送のつど1だけ減少します。
実行前のR0とR1の内容は最初に処理する要素のアドレスに要素サイズを加えたアドレスを示します。
![]()
【フラグ変化】
【発生EIT】
RIE sx = 11 RIE eeee ≧ 0111
【使用例】
2バイトの要素が最大15個分アドレスH'00002000からアドレスH'00001000に転送されます。転送中にH'ffffの要素が検出されると、命令は終了します。