Verwechseln mit CMPSB Anleitung

Schaue ich diesen code, und ich bin verwirrt über die rep cmpsb Linie.

.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

Ich verstehe, dass es wiederholt cmpsb cx mal, aber wie funktioniert das vergleichen von zwei strings? Nehmen wir zum Beispiel den Vergleich wurde "Hey\0" und "hey\0" und diese Schleife war Vergleich 4 Zeichenketten. Die ersten Zeichen sind andere und die EFlags register entsprechend gesetzt werden. Jedoch, die cmpsb Anweisung wird wiederholt, und das nächste Zeichen wäre das gleiche. Ich kann Missverständnisse, wie cmpsb funktioniert, aber es sieht aus wie diese Schleife wird nicht richtig vergleichen Sie zwei strings. Funktioniert diese Schleife ist in der Tat Arbeit?

  • Ähm, warum siehst du nicht, wie CMPSB arbeitet in einem CPU-Handbuch?
  • Ähm @Alex ich habe. Die Verwirrung war aufgrund der REP instruction.
  • REP ist nicht einer eigenen Anleitung. Es ist eine Anweisung prefix, IOW-Anweisung Modifikator. Die Dokumentation erklärt es auch.
Schreibe einen Kommentar