我一直在看这段代码,我对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 的工作原理,但看起来这个循环没有正确比较两个字符串。这个循环真的有效吗?