LOOPNE の有用性が理解できません。LOOPNE がなくて LOOP だけがあったとしても、ここで同じことをしたでしょう。私を助けてください。
MOV CX, 80
MOV AH,1
INT 21H
CMP AL, ' '
LOOPNE BACK
CMP
つまりSUB
、ZF (ゼロ フラグ) などのフラグを設定します。
LOOPNE
ループする 2 つの条件があります:cx > 0
およびZF = 0
LOOP
ループする条件が 1 つあります。cx > 0
したがって、法線LOOP
はすべての文字を通過しますが、LOOPNE
はすべての文字を通過するか、スペースが検出されるまで通過します。いずれか早い方
LOOPNEは、比較が失敗した場合、およびゼロ以外の反復カウントが残っている場合(デクリメント後)にループします。これは、既知の長さの線形リストで要素を見つけるのにおそらく非常に便利です。
最近のx86CPUではほとんど使用されていません。
LOOPNE命令は、マイクロ命令によってCPUの内部に実装される可能性が高いため、実質的にJNE / DEC CX/JNEと同等です。CPU設計者は、比較/分岐/レジスタ演算を最適化するために多大な労力を費やしているため、高度にパイプライン化されたCPUでは、同等の命令シーケンスが実質的に同じ速度で実行される可能性があります。実際には実行速度が遅くなる可能性があります。あなたはそれを計時することによってのみ知るでしょう。そして、それが何をするかについてあなたが混乱しているという事実は、それをコーディングエラーの原因にします。
一度誤解してしまったので、現在は同等の命令シーケンスをコーディングしています。私はCMPとJNEについて混乱していません。