上のニーモニック表の通り、「SCAS?」命令はレジスタの内容とメモリーの内容を比較する。 DIが増えるか減るかは、「MOSV?」と同様、DF(フラグ)によって変わる。SCASB ( Scan String Bytes ) :ストリングのバイト検索
SCASB 動作:ALと[ES:DI]とを比較する DF=1の時は、DIを1減らす。 DF=0の時は、DIを1増やす。 影響を受けるフラグ:OF,SF,ZGF,AF,PF,CFが結果を反映するSCASW ( Scan String Words ) :ストリングのワード検索
SCASW 動作:AXと[ES:DI]とを比較する DF=1の時は、DIを2減らす。 DF=0の時は、DIを2増やす。 影響を受けるフラグ:OF,SF,ZGF,AF,PF,CFが結果を反映するSCASD ( Scan String Doublewords ) :ストリングのダブルワード検索
SCASD (80386以上) 動作:EAXと[ES:DI]とを比較する DF=1の時は、DIを4減らす。 DF=0の時は、DIを4増やす。 影響を受けるフラグ:OF,SF,ZGF,AF,PF,CFが結果を反映する
この命令は主に、次の用途に使われる。
ここで注意してほしいのは、同じ文字を探す場合、REPを抜けたときのDIは1つずれて、同じ値の次の値を指している。逆に違う文字を探す場合も、REPを抜けたときのDIは1つずれていることに注意してください。
- 「REPNE(REPNZ)」と組み合わせ、AL(AX,EAX)と同じ文字を探す。
- 「REPE(REPZ)」と組み合わせ、AL(AX,EAX)と違う文字を探す。
| ストリングの検索 【86】 |
|