1. ホーム

アセンブリノート No.2 - jnz (または jz ) を実行するためにテストを使用する方法

2022-02-16 01:53:31
テスト条件
JZ ZF=1 // JZ=ゼロならジャンプ(結果が0ならZFゼロフラグを1にセットしてジャンプ)
JNZ ZF=0 // JNZ=ゼロでない場合、ジャンプする 
testは論理演算命令 
機能 BITとBITの間の論理演算を行います。    
テスト(2つのオペランドを合計し、フラグビットのみを変更し、結果を返さない)。 
2つのパラメータ(target, source)に対してAND論理演算を行い、その結果に応じてフラグレジスタを設定するテストです(結果自体は保存されません)。
TEST AX,BX は AND AX,BX コマンドと同じ効果です。 
アプリケーションの例です。
1. Testは、ビットをテストするために使用します。
レジスタの例:test eax, 100b; b接尾辞はバイナリを意味します。
JNZ ******です。            
eaxの右から3番目のビットが1なら、jnzはジャンプします。 
jnzがジャンプする条件はZF=0です。ZF=0はZF(ゼロフラグ)がセットされていない、つまり論理と結果が1であることを意味します。 
2. Testの非常に一般的な使い方は、レジスタの片側が空かどうかをテストすることです。 
テスト ecx, ecx
jz どこか ecx が 0 ならば、ZF zero フラグを 1 にセットし、Jz ジャンプ