Я смотрел этот код, и я смущен насчет rep cmpsb.Смущенный инструкцией 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, но похоже, что этот цикл неправильно сравнивает две строки. Действительно ли этот цикл работает?
Ум, почему вы не видите, как CMPSB работает в руководстве по процессору? –
Um @Alex Я сделал. Путаница была вызвана инструкцией ** REP **. –
REP не является самостоятельной инструкцией. Это префикс инструкции, модификатор команды IOW. Документация объясняет это также. –