title: How to use two registers for addressing?
body: <p>I have problems executing the code below</p>
  <pre><code>unique proc
      
      invoke lstrlen, esi
      cmp eax, 1
      jle quit
      mov ebx, 0; previous iterator
      mov edx, 0; next iterator
      dec eax
      mov ecx, eax
      inc eax
  next:
      inc edx
      cmp [esi][ebx], [esi][edx]
      je skip
      cmp 
      inc ebx
      cmp ebx, edx
      dec ebx
      je skip
      inc ebx
      mov [esi][ebx], [esi][edx]
  skip:
      loop next
      mov [esi][edx], '0'
  quit:
      ret
  
  unique endp
  </code></pre>
  <p>I am using indirect addressing here, so I expect</p>
  <pre><code>cmp [esi][ebx], [esi][edx]
  </code></pre>
  <p>to be replaced with</p>
  <pre><code>cmp ds:[esi][ebx], ds:[esi][edx]
  </code></pre>
  <p>Where am I wrong here?</p>