| SCMP ストリング命令 <<L1R>>,<<L1>>,<<L2>> |
【ニモニックとオペランド】
SCMP
【機能】
Compare strings
ストリングの比較
【オプション】
/F アドレス増加方向に処理(デフォルト) /B アドレス減少方向に処理(<<L2>>) /ee 割出し条件(下表のニモニック参照)
【命令フォーマットと表記法】
レジスタ上のパラメータ
R0 :src1ストリングの先頭アドレス R1 :src2ストリングの先頭アドレス R2 :要素数 R3 :割出し条件の比較値
【解説】
SCMP命令はsrc1のストリングがsrc2のストリングと一致しているかどうかをテストします。
テストは各要素ごとに行われます。毎回src1の各要素を汎用レジスタR3に示された比較値に対して検査します。src1の要素がsrc2の要素と一致していない場合、または割出し条件が満たされる場合には、命令を終了します。すべての要素が一致していて、割出し条件が満たされない場合には、R2に示される数の要素が処理されます。
最後にテストした要素が他方のストリングの対応する値と一致していない、または最後にテストした要素が割出し条件を満たす場合には、R2が0を示しますが、V_flagはセットされません。
最後にテストした要素のテスト結果を示すために、X_flag、L_flag、Z_flagがセットされます。
実行中に外部割込みを受け付けたときには、レジスタの内容が処理が行われたところまで更新されています。
・アドレス増加方向の処理
R0とR1の内容は、src1とsrc2のストリングのアドレスを示し、一組の要素がテストされるつど要素サイズだけ増加します。命令が終了したとき、それぞれの内容は最後にテストされた要素のアドレス に要素サイズを加えたアドレスを示します。
R2の内容はテストのつど1だけ減少します。
・アドレス減少方向の処理
R0とR1の内容は、src1とsrc2のストリングのアドレスを示し、一組の要素がテストされるつど要素サイズだけ減少します。命令が終了したとき、それぞれの内容は最後にテストされた要素のアドレスを示します。
R2の内容はテストのつど1だけ減少します。
実行前には、R0とR1の内容は最初にテストする要素のアドレスに要素サイズを加えたアドレスを示します。
![]()
【フラグ変化】
【発生EIT】
RIE sx = 11 RIE eeee ≧ 0111
【使用例】
アドレスH'0000ff00からの1バイトの要素とアドレスH'0fffff00からの
1バイトの要素とを最大256個分比較します。H'20よりも小さい要素が検出されると、命令が終了します。