我一直在寻找这个代码,我感到困惑的代表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倍,但它如何比较两个字符串? 例如说是比较“嘿\ 0”和“哎\ 0”,这是环比较4个字符串。 第一字符是不同的,EFLAGS寄存器将被相应地设置。 然而,CMPSB指令重复,下一个字符将是相同的。 我可能是误解如何CMPSB的作品,但它看起来像这样循环不正确地比较两个字符串。 这是否循环其实工作吗?