Запутался с инструкцией CMPSB

Я смотрю на этот код и не понимаю строку rep cmpsb.

.LOOP:
      push    cx
      mov     cx, 0x000B                            ; eleven character name
      mov     si, ImageName                         ; image name to find
      push    di
 rep  cmpsb                                         ; test for entry match
      pop     di
      je      LOAD_FAT
      pop     cx
      add     di, 0x0020                            ; queue next directory entry
      loop    .LOOP
      jmp     FAILURE

Я понимаю, что он повторяет cmpsb cx раз, но как это сравнивает две строки? Скажем, например, сравнивались "Hey\0" и "hey\0", и этот цикл сравнивал строки из 4 символов. Первые символы отличаются, и регистр EFlags будет установлен соответствующим образом. Однако инструкция cmpsbповторяется, и следующие символы будут такими же. Возможно, я неправильно понимаю, как работает cmpsb, но похоже, что этот цикл неправильно сравнивает две строки. Действительно ли этот цикл работает?

5
задан Hudson Worden 11 May 2012 в 13:43
поделиться