私はこのコードを見てきましたが、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 回繰り返すことは理解していますが、これは 2 つの文字列をどのように比較しますか? たとえば、"Hey\0" と "hey\0" を比較していて、このループで 4 つの文字列を比較していたとします。最初の文字が異なり、それに応じて EFlags レジスタが設定されます。ただし、cmpsb命令は繰り返され、次の文字は同じになります。cmpsbの仕組みを誤解しているかもしれませんが、このループは 2 つの文字列を正しく比較していないようです。このループは実際に機能しますか?