He estado mirando este código y estoy confundido acerca de la línea rep cmpsb.Confundido con la instrucción 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
Entiendo que se repite cmpsb cx veces, pero ¿cómo se comparan las dos cadenas? Digamos, por ejemplo, que fue comparar "Hey \ 0" y "hey \ 0" y este ciclo comparó 4 cadenas de caracteres. Los primeros caracteres son diferentes y el registro EFlags se establecerá en consecuencia. Sin embargo, se repite la instrucción cmpsb y los siguientes caracteres serían los mismos. Puede que esté entendiendo mal cómo funciona cmpsb, pero parece que este bucle no compara correctamente dos cadenas. ¿Funciona este bucle de hecho?
Um, ¿por qué no ves cómo funciona CMPSB en un manual de CPU? –
Um @Alex lo hice. La confusión se debió a la instrucción ** REP **. –
REP no es una instrucción propia. Es un prefijo de instrucción, un modificador de instrucción IOW. La documentación también lo explica. –