私はアセンブリ言語プログラミングに少し慣れていないので、この質問が無関係に思われる場合はご容赦ください。私は 32 ビット加算プログラムを理解しようとしていましたが、以下は (EAX に保存された) 加算の結果をコンソールに表示するために使用される手順の 1 つです。
;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
ROL 命令が DISP1 ラベルで使用される理由と、それが何を達成するのかを理解するのを手伝ってください。前もって感謝します。:)