title: Assembly x86 REP, REPZ, REPNZ, XACQUIRE and XRELEASE instructions
body: <p>As I have noticed the <code>0xF3</code> binary prefix is used as:<br>
  1) repeat and decrease <code>ecx</code> until <code>ecx</code> equal to <code>0</code> in the <code>INS</code>,<code>OUTS</code>,<code>MOVS</code>,<code>LODS</code>,<code>STOS</code> instructions and called <code>rep</code><br>
  2) repeat and decrease <code>ecx</code> until <code>ecx</code> equal to <code>0</code> or <code>ZF</code> set in the <code>CMPS</code>,<code>SCAS</code> instructions and called <code>repz</code> or <code>repe</code></p>
  
  <p>The <code>0xF3</code> binary prefix is used as:<br>
  1) repeat and decrease <code>ecx</code> until <code>ecx</code> equal to <code>0</code> or <code>ZF</code> NOT set in the <code>CMPS</code>,<code>SCAS</code> instructions and called <code>repnz</code> or <code>repne</code></p>
  
  <p>Recently noticed that <code>XACQUIRE</code>/<code>XRELEASE</code> prefixes also have the same binary values (<code>0xF2</code>,<code>0xF3</code>)   </p>
  
  <p>So what <code>XACQUIRE</code>/<code>XRELEASE</code> is doing (I read something about locking an memory address but they are not work line <code>lock</code> (I believe))?  </p>
  
  <p>Also what <code>0xF3 mov byte ptr [ecx],0x0</code> will do? (will stop at <code>ZF</code> set\not set or it will stop only at <code>ecx</code> equal to <code>0</code>)<br>
  And what <code>0xF2 mov byte ptr [ecx],0x0</code> will do?</p>