SCMPU

ストリング比較

SCMPU

String CoMPare Until not equal


【構文】

SCMPU

 

【オペレーション】

unsigned char *R2, *R1, tmp0, tmp1;

unsigned long R3;

while ( R3 != 0 ) {

tmp0 = *R1++;

tmp1 = *R2++;

R3--;

if ( tmp0 != tmp1 || tmp0 == '\0' ) {

break;

}

}

R3に0を設定して実行したとき、本命令は無視され、レジスタおよびフラグは変化しません。

 

【機能】

-

R1で示される比較元番地とR2で示される比較先番地のデータを、比較の結果が不一致になるか、Nullキャラクタ‘\0’(=00h)が検出されるまで、R3で指定されたバイト数を上限として、アドレスの加算方向にストリング比較を行います。

-

命令実行時は、R1で示される比較元番地とR2で示される比較先番地から、それぞれデータプリフェッチが行われる場合があります。ただし、R3で指定された範囲を超えるデータプリフェッチは行いません。プリフェッチされるデータサイズについては、各製品のハードウェアマニュアルを参照してください。

-

命令終了時のR1、R2は不定になります。

-

命令実行中に割り込み要求があった場合は、演算を中断して割り込みを受け付けます。割り込みルーチンからの復帰後、中断されていた処理を継続して実行します。本命令を使用する際には、割り込み時、R1、R2、R3とPSWを退避/復帰してください。

 

【命令フォーマット】

構文

処理

サイズ

コードサイズ

(バイト)

SCMPU

B

2

 

【フラグ変化】

フラグ

C

Z

S

O

変化

条件

C:(*R1 - *R2)を符号なしで演算した結果、0以上のとき“1”、それ以外のとき“0”になります。

Z:双方のストリングが一致していたとき“1”、それ以外のとき“0”になります。

 

【記述例】

SCMPU