主题:程序分析,高手进来!
这是一个把BX寄存器的二进制数用十六进制数的形式在屏幕上显示出来的程序:
PROGNAM SEGMENT
MAIN PROC FAR
ASSUME CS:PROGNAM 问题1:这句实现什么功能???
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV CH,4 问题2:为什么给CH赋值4???
ROTATE:
MOV CL,4 问题3:为什么给CL赋值4???
ROL BX,CL
MOV AL,BL
AND AL,0FH 问题4:为什么与 AL 进行 与 运算的是 0FH ???
ADD AL,30H 问题5:为什么与 AL 加上 30H ???
CMP AL,3AH
JL PRINTIT
ADD AL,7H 问题6:当什么情况下 AL需要加 7H ?
PRINTIT:
MOV DL,AL 问题7:从此行开始,这三行实现什么功能???
MOV AH,2
INT 21H
DEC CH
JNZ ROTATE
RET
MAIN ENDP
PROGNAM ENDS
END
PROGNAM SEGMENT
MAIN PROC FAR
ASSUME CS:PROGNAM 问题1:这句实现什么功能???
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV CH,4 问题2:为什么给CH赋值4???
ROTATE:
MOV CL,4 问题3:为什么给CL赋值4???
ROL BX,CL
MOV AL,BL
AND AL,0FH 问题4:为什么与 AL 进行 与 运算的是 0FH ???
ADD AL,30H 问题5:为什么与 AL 加上 30H ???
CMP AL,3AH
JL PRINTIT
ADD AL,7H 问题6:当什么情况下 AL需要加 7H ?
PRINTIT:
MOV DL,AL 问题7:从此行开始,这三行实现什么功能???
MOV AH,2
INT 21H
DEC CH
JNZ ROTATE
RET
MAIN ENDP
PROGNAM ENDS
END