请帮忙看个子程序
;计算16进制到10进制
_HexToDec proc
local @szBuffer[512]:byte
invoke GetDlgItemText,hWinMain,IDC_HEX,addr @szBuffer,sizeof @szBuffer
lea esi,@szBuffer
cld
xor eax,eax
mov ebx,16
.while TRUE
movzx ecx,byte ptr [esi]
inc esi
.break .if ! ecx ;此处是对ECX按位取反还是把ECX作为表达式的结果再取反呢?
.if cl > '9' ;cl中装的是数值,还是字符的ASCII码?
sub cl,'A' - 0ah ;此处减去0ah是什么意思,该指令的意思?
.else
sub cl,'0'
.endif
mul ebx ;ebx与谁相乘,默认的不是与累加器相乘吗?结果又放在哪里?
add eax,ecx
.endw
invoke wsprintf,addr @szBuffer,addr szFmtHexToDec,eax
invoke SetDlgItemText,hWinMain,IDC_DEC,addr @szBuffer
ret
_HexToDec endp