SMOVU

ストリング転送

SMOVU

Strings MOVe while Unequal to zero


【構文】

SMOVU

 

【オペレーション】

unsigned char *R1, *R2, tmp;

unsigned long R3;

while ( R3 != 0 ) {

tmp = *R2++;

*R1++ = tmp;

R3--;

if ( tmp == '\0' ) {

break;

}

}

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

 

【機能】

-

R2で示される転送元番地からR1で示される転送先番地へNullキャラクタ‘\0’(=00h)が検出されるまで、R3で指定されたバイト数を上限として、アドレス加算方向にストリング転送を行います。転送はNullキャラクタ転送後に終了します。

-

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

-

R2で示される転送元番地からデータプリフェッチされる範囲にR1で示される転送先番地が含まれない条件で使用してください。

-

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

-

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

 

【命令フォーマット】

構文

処理

サイズ

コードサイズ

(バイト)

SMOVU

B

2

 

【フラグ変化】

フラグ変化はありません。

 

【記述例】

SMOVU