我对汇编语言编程有点陌生,所以如果这个问题似乎无关紧要,请原谅我。我试图了解一个 32 位加法程序,以下是用于将加法结果(保存在 EAX 中)显示回控制台的过程之一:
;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
请帮助我理解为什么在 DISP1 标签下使用 ROL 指令,以及它实现了什么。提前致谢。:)