Я смотрю на этот код и не понимаю строку 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, но похоже, что этот цикл неправильно сравнивает две строки. Действительно ли этот цикл работает?