이 코드를 살펴본 결과 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가 CPU 매뉴얼에서 어떻게 작동하는지 보시지 않겠습니까? –
음 @Alex 내가 그랬어. 혼동은 ** REP ** 명령 때문이었습니다. –
REP는 자체 명령이 아닙니다. 명령 접두사, IOW 명령 수정 자입니다. 설명서에도 설명되어 있습니다. –