|
本帖最后由 EAX 于 2020-7-6 00:05 编辑
- .版本 2
- .程序集 程序集1
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
- 检查 (MD5_F (1234567890, 777777777, 987654321) = 979004017)
- 检查 (MD5_G (1234567890, 777777777, 987654321) = 211260112)
- 检查 (MD5_H (1234567890, 777777777, 987654321) = 1561565202)
- 检查 (MD5_I (1234567890, 777777777, 987654321) = -471046737)
- .子程序 MD5_F, 整数型, , F(X,Y,Z) = ((X&Y)|(~X&Z))
- .参数 X, 整数型
- .参数 Y, 整数型
- .参数 Z, 整数型
- 置入代码 ({ 83, 139, 69, 8, 35, 69, 12, 139, 93, 8, 247, 211, 35, 93, 16, 11, 195, 91, 201, 194, 12, 0 })
- ' push ebx
- ' mov eax,[ebp+8]
- ' and eax,[ebp+12]
- ' mov ebx,[ebp+8]
- ' not ebx
- ' and ebx,[ebp+16]
- ' or eax,ebx
- ' pop ebx
- ' leave
- ' retn 12
- 返回 (0)
- ' 返回 (位或 (位与 (X, Y), 位与 (位取反 (X), Z)))
- .子程序 MD5_G, 整数型, , G(X,Y,Z) = ((X&Z)|(Y&~Z))
- .参数 X, 整数型
- .参数 Y, 整数型
- .参数 Z, 整数型
- 置入代码 ({ 83, 139, 69, 8, 35, 69, 16, 139, 93, 16, 247, 211, 35, 93, 12, 11, 195, 91, 201, 194, 12, 0 })
- ' push ebx
- ' mov eax,[ebp+8]
- ' and eax,[ebp+16]
- ' mov ebx,[ebp+16]
- ' not ebx
- ' and ebx,[ebp+12]
- ' or eax,ebx
- ' pop ebx
- ' leave
- ' retn 12
- 返回 (0)
- ' 返回 (位或 (位与 (X, Z), 位与 (Y, 位取反 (Z))))
- .子程序 MD5_H, 整数型, , H(X,Y,Z) = (X^Y^Z)
- .参数 X, 整数型
- .参数 Y, 整数型
- .参数 Z, 整数型
- 置入代码 ({ 139, 69, 8, 51, 69, 12, 51, 69, 16, 201, 194, 12, 0 })
- ' mov eax,[ebp+8]
- ' xor eax,[ebp+12]
- ' xor eax,[ebp+16]
- ' leave
- ' retn 12
- 返回 (0)
- ' 返回 (位异或 (X, Y, Z))
- .子程序 MD5_I, 整数型, , I(X,Y,Z) = (Y^(X|~Z))
- .参数 X, 整数型
- .参数 Y, 整数型
- .参数 Z, 整数型
- 置入代码 ({ 139, 69, 16, 247, 208, 11, 69, 8, 51, 69, 12, 201, 194, 12, 0 })
- ' mov eax,[ebp+16]
- ' not eax
- ' or eax,[ebp+8]
- ' xor eax,[ebp+12]
- ' leave
- ' retn 12
- 返回 (0)
- ' 返回 (位异或 (Y, 位或 (X, 位取反 (Z))))
复制代码 |
|