上のニーモニック表の通り、「STOS?」命令はレジスタの内容をメモリーに書き込む。 DIが増えるか減るかは、「MOSV?」と同様、DF(フラグ)によって変わる。STOSB ( Store String Bytes ) :ストリングのバイト設定
STOSB 動作:ALを[ES:DI]に書き込み、 DF=1の時は、DIを1減らす。 DF=0の時は、DIを1増やす。 影響を受けるフラグ:なしSTOSW ( Store String Words ) :ストリングのワード設定
STOSW 動作:AXを[ES:DI]に書き込み、 DF=1の時は、DIを2減らす。 DF=0の時は、DIを2増やす。 影響を受けるフラグ:なしSTOSD ( Store String Doublewords ) :ストリングのダブルワード設定
STOSD (80386以上) 動作:EAXを[ES:DI]に書き込み、 DF=1の時は、DIを4減らす。 DF=0の時は、DIを4増やす。 影響を受けるフラグ:なし
この命令は前ページの「LODS?」、「LOOP」と組み合わせて、例えば大文字に変換するといった細工や大文字かなど比較を行いながらのコピーに使われたり、文字列を大文字にしながらコピーするとか、ある文字が出てくるまでコピーすると言った用途に使われる。
別の用途としては、メモリーの初期化に使われる。例えば、ALに初期値を格納し、 CXに初期化したいメモリーのバイト数を入れ、「REP」命令と組み合わせて、メモリーを初期値(AL)で埋めたりする。
| ストリングの設定 【86】 |
|