title: Assembly x86, looping and replace values in an array
body: <p>Hey I need to make a program that loops through an array (1,2,3,4,5,6,7,8,9,10) and exchanges the element ‘i’ with element ‘i+5’ when ‘i' is under 4 When the program ends, the new array has the following values 6,7,8,9,10,1,2,3,4,5</p>
  
  <p>and right now I have it looping through the array</p>
  
  <pre><code>    .386
  .model flat,stdcall
  .stack 4096
  ExitProcess proto,dwExitCode:dword
  WriteDec PROTO
  Crlf PROTO
  DumpRegs PROTO
  .data
  arrayB WORD 1,2,3,4,5,6,7,8,9,10
  .code
  main proc
  mov eax,0
  
  mov edi,OFFSET arrayB   ; address of arrayB
  mov ecx,LENGTHOF arrayB ; loop counter
  
  mov ax,0    ; zero the accumulator
  
  L1:
  mov ax,[edi]    ; mov current edi value from array into ax
  xchg arrayB, ax ;change the current ax register with the value in arrayB
  add edi,TYPE arrayB ; point to next integer
  
      loop L1
  
      call DumpRegs
      call WriteDec
      call crlf
      invoke ExitProcess,0
  main endp
  end main
  </code></pre>
  
  <p>But Im having trouble actually a) telling when the loop is under 4, and b) replacing the values correctly. Any help would be greatly appreciated </p>
  
  <p>Edit: I do know I can use "cmp" to compare the ecx register</p>