warum ist ROL-Befehl benutzt wird?

Ich bin etwas neu auf Assembler-Programmierung, so verzeihen Sie mir, wenn diese Frage scheint irrelevant.
Ich versuche zu verstehen, was ein 32-bit-Zusatz-Programm-und das folgende ist eines der Verfahren verwendet werden, um das Ergebnis der addition (gespeichert in EAX) an die Konsole

;Procedure to display EAX as a 8 digit hex number

DISPH PROC NEAR

   PUSH EBX        ; Save EBX
   MOV CL,4        ; To rotate the register by 4 bits
   MOV SI,8        ; Count for displaying 8 digits

DISPH1:

   ROL EAX,CL      ; Rotate EAX left by 4 bits
   PUSH EAX        ; Save EAX
   AND AL,0FH
   ADD AL,30H
   CMP AL,'9'      ; if AL <= '9', AL contains the ASCII code
   JBE DISPH2       
   ADD AL,7        ; if AL > '9' , add 07H to AL to convert into ASCII

DISPH2:

   MOV AH,2H       ; O/P subprogram
   MOV DL,AL       ; Call MS-DOS O/P subprogram
   INT 21H         ; Display the data in DL register on screen
   POP EAX         ; retrieve EAX from Stack
   DEC SI
   JNZ DISPH1
   POP EBX         ; Restore EBX
   RET

DISPH ENDP

END             ; end of file

Bitte helfen Sie mir zu verstehen, warum ROL-Befehl benutzt wird, unter DISP1 label, was hilft es uns, zu erreichen.
Vielen Dank im Voraus.. 🙂

  • Das ist etwas seltsam-code. Warum nicht rol eax, 4? Und warum ist ebx (in der Regel eine angerufene-save-register) gespeichert und wiederhergestellt werden, auch wenn es nicht verwendet wird?
  • in der Tat beide Operationen sind nutzlos ... schön obserevations da..
Schreibe einen Kommentar