谁能帮我看这段代码?
时间:2010-11-29
来源:互联网
最近在学汇编,谁能帮我注释下下面那段代码?
另外我想问下z8d168用UVISION编译时,cpu选什么?
@b1-@a=0EFCDAB89H-67452301H=88888888H
@c [email=[ft=,2,]-@d=098BADCFEH-10325476H=88888888H]-@d=098BADCFEH-10325476H=88888888H[/email]
;*************************************************
MAND Macro M1,M2
mov eax,M1
and eax,M2
EXITM <eax>
ENDM
MXOR Macro M1,M2
mov eax,M1
xor eax,M2
EXITM <eax>
endm
MADD Macro M1,M2
mov eax,M1
add eax,M2
EXITM <eax>
ENDM
SWAP Macro M1,M2
push M1
push M2
pop M1
pop M2
endm
Mcopy MACRO lpSource,lpDest,len
mov esi, lpSource
mov edi, lpDest
mov ecx, len
rep movsb
ENDM
WordToHex MACRO _lValue
mov eax,_lValue
xchg al,ah
rol eax,16
xchg al,ah
EXITM <eax>
ENDM
.const
.data?
stMd5Hex DB 33 DUP (?)
.data
szData_SS DWORD 7,12,17,22
DWORD 5,9,14,20
DWORD 4,11,16,23
DWORD 6,10,15,21
stData_FF DWORD 0D76AA478H,0E8C7B756H,0242070DBH,0C1BDCEEEH
DWORD 0F57C0FAFH,04787C62AH,0A8304613H,0FD469501H
DWORD 0698098D8H,08B44F7AFH,0FFFF5BB1H,0895CD7BEH
DWORD 06B901122H,0FD987193H,0A679438EH,049B40821H
stData_GG DWORD 0F61E2562H,0C040B340H,0265E5A51H,0E9B6C7AAH
DWORD 0D62F105DH,002441453H,0D8A1E681H,0E7D3FBC8H
DWORD 021E1CDE6H,0C33707D6H,0F4D50D87H,0455A14EDH
DWORD 0A9E3E905H,0FCEFA3F8H,0676F02D9H,08D2A4C8AH
stData_HH DWORD 0FFFA3942H,08771F681H,06D9D6122H,0FDE5380CH
DWORD 0A4BEEA44H,04BDECFA9H,0F6BB4B60H,0BEBFBC70H
DWORD 0289B7EC6H,0EAA127FAH,0D4EF3085H,004881D05H
DWORD 0D9D4D039H,0E6DB99E5H,01FA27CF8H,0C4AC5665H
stData_II DWORD 0F4292244H,0432AFF97H,0AB9423A7H,0FC93A039H
DWORD 0655B59C3H,08F0CCC92H,0FFEFF47DH,085845DD1H
DWORD 06FA87E4FH,0FE2CE6E0H,0A3014314H,04E0811A1H
DWORD 0F7537E82H,0BD3AF235H,02AD7D2BBH,0EB86D391H
.code
_md5_FF Proc uses ecx _a, _b, _c, _d, _x, _s, _ac
mov eax,_b
and eax,_c
mov ecx,_b
not ecx
and ecx,_d
or eax,ecx
add eax,_a
add eax,_x
add eax,_ac
mov ecx,_s
rol eax,cl
add eax,_b
ret
_md5_FF endp
_md5_GG Proc uses ecx _a,_b,_c,_d,_x,_s,_ac
mov eax,_b
and eax,_d
mov ecx,_d
not ecx
and ecx,_c
or eax,ecx
add eax,_a
add eax,_x
add eax,_ac
mov ecx,_s
rol eax,cl
add eax,_b
ret
_md5_GG EndP
_md5_HH Proc uses ecx _a,_b,_c,_d,_x,_s,_ac
mov eax,_b
xor eax,_c
xor eax,_d
add eax,_a
add eax,_x
add eax,_ac
mov ecx,_s
rol eax,cl
add eax,_b
ret
_md5_HH EndP
_md5_II Proc uses ecx _a,_b,_c,_d,_x,_s,_ac
mov eax,_d
not eax
or eax,_b
xor eax,_c
add eax,_a
add eax,_x
add eax,_ac
mov ecx,_s
rol eax,cl
add eax,_b
ret
_md5_II EndP
_ConvertToWordArray Proc uses edi esi ecx _lpData,_dwLen
LOCAL @lWordArray,@lNumberOfWords
mov eax,_dwLen
add eax,8
shr eax,6
inc eax
shl eax,4
dec eax
shl eax,2
mov @lNumberOfWords,eax
invoke VirtualAlloc,NULL,@lNumberOfWords,MEM_COMMIT,PAGE_READWRITE
mov @lWordArray,eax
mov edi,eax
invoke RtlZeroMemory,@lWordArray,@lNumberOfWords
mov esi,_lpData
Mcopy _lpData,@lWordArray,_dwLen
mov eax,128
stosd
mov edi,@lWordArray
mov ecx,@lNumberOfWords
shr ecx,2
mov eax,_dwLen
shr eax,29
mov DWORD PTR [edi+ecx*4],eax
dec ecx
mov eax,_dwLen
shl eax,3
mov DWORD PTR [edi+ecx*4],eax
mov eax,@lWordArray
ret
_ConvertToWordArray endp
;###############################################
; 主程序
; _lpData 需要加密的数据指针
; _dwLen 需要加密的数据长度
; 返回值 MD5文本指针
;###############################################
另外我想问下z8d168用UVISION编译时,cpu选什么?
@b1-@a=0EFCDAB89H-67452301H=88888888H
@c [email=[ft=,2,]-@d=098BADCFEH-10325476H=88888888H]-@d=098BADCFEH-10325476H=88888888H[/email]
;*************************************************
MAND Macro M1,M2
mov eax,M1
and eax,M2
EXITM <eax>
ENDM
MXOR Macro M1,M2
mov eax,M1
xor eax,M2
EXITM <eax>
endm
MADD Macro M1,M2
mov eax,M1
add eax,M2
EXITM <eax>
ENDM
SWAP Macro M1,M2
push M1
push M2
pop M1
pop M2
endm
Mcopy MACRO lpSource,lpDest,len
mov esi, lpSource
mov edi, lpDest
mov ecx, len
rep movsb
ENDM
WordToHex MACRO _lValue
mov eax,_lValue
xchg al,ah
rol eax,16
xchg al,ah
EXITM <eax>
ENDM
.const
.data?
stMd5Hex DB 33 DUP (?)
.data
szData_SS DWORD 7,12,17,22
DWORD 5,9,14,20
DWORD 4,11,16,23
DWORD 6,10,15,21
stData_FF DWORD 0D76AA478H,0E8C7B756H,0242070DBH,0C1BDCEEEH
DWORD 0F57C0FAFH,04787C62AH,0A8304613H,0FD469501H
DWORD 0698098D8H,08B44F7AFH,0FFFF5BB1H,0895CD7BEH
DWORD 06B901122H,0FD987193H,0A679438EH,049B40821H
stData_GG DWORD 0F61E2562H,0C040B340H,0265E5A51H,0E9B6C7AAH
DWORD 0D62F105DH,002441453H,0D8A1E681H,0E7D3FBC8H
DWORD 021E1CDE6H,0C33707D6H,0F4D50D87H,0455A14EDH
DWORD 0A9E3E905H,0FCEFA3F8H,0676F02D9H,08D2A4C8AH
stData_HH DWORD 0FFFA3942H,08771F681H,06D9D6122H,0FDE5380CH
DWORD 0A4BEEA44H,04BDECFA9H,0F6BB4B60H,0BEBFBC70H
DWORD 0289B7EC6H,0EAA127FAH,0D4EF3085H,004881D05H
DWORD 0D9D4D039H,0E6DB99E5H,01FA27CF8H,0C4AC5665H
stData_II DWORD 0F4292244H,0432AFF97H,0AB9423A7H,0FC93A039H
DWORD 0655B59C3H,08F0CCC92H,0FFEFF47DH,085845DD1H
DWORD 06FA87E4FH,0FE2CE6E0H,0A3014314H,04E0811A1H
DWORD 0F7537E82H,0BD3AF235H,02AD7D2BBH,0EB86D391H
.code
_md5_FF Proc uses ecx _a, _b, _c, _d, _x, _s, _ac
mov eax,_b
and eax,_c
mov ecx,_b
not ecx
and ecx,_d
or eax,ecx
add eax,_a
add eax,_x
add eax,_ac
mov ecx,_s
rol eax,cl
add eax,_b
ret
_md5_FF endp
_md5_GG Proc uses ecx _a,_b,_c,_d,_x,_s,_ac
mov eax,_b
and eax,_d
mov ecx,_d
not ecx
and ecx,_c
or eax,ecx
add eax,_a
add eax,_x
add eax,_ac
mov ecx,_s
rol eax,cl
add eax,_b
ret
_md5_GG EndP
_md5_HH Proc uses ecx _a,_b,_c,_d,_x,_s,_ac
mov eax,_b
xor eax,_c
xor eax,_d
add eax,_a
add eax,_x
add eax,_ac
mov ecx,_s
rol eax,cl
add eax,_b
ret
_md5_HH EndP
_md5_II Proc uses ecx _a,_b,_c,_d,_x,_s,_ac
mov eax,_d
not eax
or eax,_b
xor eax,_c
add eax,_a
add eax,_x
add eax,_ac
mov ecx,_s
rol eax,cl
add eax,_b
ret
_md5_II EndP
_ConvertToWordArray Proc uses edi esi ecx _lpData,_dwLen
LOCAL @lWordArray,@lNumberOfWords
mov eax,_dwLen
add eax,8
shr eax,6
inc eax
shl eax,4
dec eax
shl eax,2
mov @lNumberOfWords,eax
invoke VirtualAlloc,NULL,@lNumberOfWords,MEM_COMMIT,PAGE_READWRITE
mov @lWordArray,eax
mov edi,eax
invoke RtlZeroMemory,@lWordArray,@lNumberOfWords
mov esi,_lpData
Mcopy _lpData,@lWordArray,_dwLen
mov eax,128
stosd
mov edi,@lWordArray
mov ecx,@lNumberOfWords
shr ecx,2
mov eax,_dwLen
shr eax,29
mov DWORD PTR [edi+ecx*4],eax
dec ecx
mov eax,_dwLen
shl eax,3
mov DWORD PTR [edi+ecx*4],eax
mov eax,@lWordArray
ret
_ConvertToWordArray endp
;###############################################
; 主程序
; _lpData 需要加密的数据指针
; _dwLen 需要加密的数据长度
; 返回值 MD5文本指针
;###############################################
作者: zhouyuf6741 发布时间: 2010-11-29
看不太懂!
作者: wxwlll 发布时间: 2010-11-29
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28