|
- .版本 2
- .支持库 spec
- .程序集 程序集1
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 A, 字节集
- .局部变量 B, 字节型, , "0"
- .局部变量 计数, 整数型
- A = 取空白字节集 (256)
- 重定义数组 (B, 假, 256)
- .变量循环首 (0, 255, 1, 计数)
- A [计数 + 1] = 计数
- B [计数 + 1] = 计数
- .变量循环尾 ()
- 输出调试文本 (字节集_字节位反转 (A))
- 输出调试文本 (字节型数组_字节位反转 (B))
- 调试输出 (A)
- 写到文件 (“BitReverseTable.bin”, A)
- 调试输出 (A = 到字节集 (B))
- .子程序 字节集_字节位反转, 逻辑型, 公开, 字节集高低位倒序颠倒翻转,成功返回真,失败返回假
- .参数 字节集, 字节集, 参考, 输入:0x01 翻转后输出:0x80,以此类推
- 置入代码 ({ 83, 81, 82, 139, 69, 8, 131, 248, 0, 127, 4, 51, 192, 235, 60, 139, 0, 131, 248, 0, 127, 4, 51, 192, 235, 49, 139, 88, 4, 131, 251, 0, 127, 4, 51, 192, 235, 37, 131, 192, 8, 131, 248, 0, 127, 4, 51, 192, 235, 25, 51, 201, 235, 12, 138, 20, 1, 232, 20, 0, 0, 0, 136, 20, 1, 65, 59, 203, 114, 240, 184, 1, 0, 0, 0, 90, 89, 91, 201, 194, 4, 0, 102, 80, 102, 83, 102, 81, 183, 1, 179, 128, 102, 51, 192, 235, 16, 138, 207, 34, 202, 10, 201, 116, 2, 10, 195, 208, 231, 208, 235, 254, 196, 128, 252, 8, 114, 235, 138, 208, 102, 89, 102, 91, 102, 88, 195 })
- ' push ebx
- ' push ecx
- ' push edx
- ' mov eax,[ebp+8]
- ' .if sdword ptr eax <= 0
- ' xor eax,eax
- ' jmp ASM_END
- ' .endif
- ' mov eax,[eax]
- ' .if sdword ptr eax <= 0
- ' xor eax,eax
- ' jmp ASM_END
- ' .endif
- ' mov ebx,[eax+4] ;字节集长度
- ' .if sdword ptr ebx <= 0
- ' xor eax,eax
- ' jmp ASM_END
- ' .endif
- ' add eax,8
- ' .if sdword ptr eax <= 0
- ' xor eax,eax
- ' jmp ASM_END
- ' .endif
- ' xor ecx,ecx
- ' .while ecx < ebx
- ' mov dl,[eax+ecx]
- ' call BitReverse
- ' mov [eax+ecx],dl
- ' inc ecx
- ' .endw
- ' mov eax,1
- ' ASM_END:
- ' pop edx
- ' pop ecx
- ' pop ebx
- ' leave
- ' retn 4
- ' BitReverse: ;位反转 输入:dl(0x01) 翻转后输出:dl(0x80)
- ' push ax
- ' push bx
- ' push cx
- ' mov bh,1
- ' mov bl,128
- ' xor ax,ax
- ' .while ah < 8
- ' mov cl,bh
- ' and cl,dl
- ' .if cl
- ' or al,bl
- ' .endif
- ' shl bh,1
- ' shr bl,1
- ' inc ah
- ' .endw
- ' mov dl,al
- ' pop cx
- ' pop bx
- ' pop ax
- ' ret
- 返回 (假)
- .子程序 字节型数组_字节位反转, 逻辑型, 公开, 字节型数组高低位倒序颠倒翻转,成功返回真,失败返回假
- .参数 字节型数组, 字节型, 数组, 输入:0x01 翻转后输出:0x80,以此类推
- 置入代码 ({ 83, 81, 82, 139, 69, 8, 131, 248, 0, 127, 4, 51, 192, 235, 60, 139, 0, 131, 248, 0, 127, 4, 51, 192, 235, 49, 139, 88, 4, 131, 251, 0, 127, 4, 51, 192, 235, 37, 131, 192, 8, 131, 248, 0, 127, 4, 51, 192, 235, 25, 51, 201, 235, 12, 138, 20, 1, 232, 20, 0, 0, 0, 136, 20, 1, 65, 59, 203, 114, 240, 184, 1, 0, 0, 0, 90, 89, 91, 201, 194, 4, 0, 102, 80, 102, 83, 102, 81, 183, 1, 179, 128, 102, 51, 192, 235, 16, 138, 207, 34, 202, 10, 201, 116, 2, 10, 195, 208, 231, 208, 235, 254, 196, 128, 252, 8, 114, 235, 138, 208, 102, 89, 102, 91, 102, 88, 195 })
- ' push ebx
- ' push ecx
- ' push edx
- ' mov eax,[ebp+8]
- ' .if sdword ptr eax <= 0
- ' xor eax,eax
- ' jmp ASM_END
- ' .endif
- ' mov eax,[eax]
- ' .if sdword ptr eax <= 0
- ' xor eax,eax
- ' jmp ASM_END
- ' .endif
- ' mov ebx,[eax+4] ;字节集长度
- ' .if sdword ptr ebx <= 0
- ' xor eax,eax
- ' jmp ASM_END
- ' .endif
- ' add eax,8
- ' .if sdword ptr eax <= 0
- ' xor eax,eax
- ' jmp ASM_END
- ' .endif
- ' xor ecx,ecx
- ' .while ecx < ebx
- ' mov dl,[eax+ecx]
- ' call BitReverse
- ' mov [eax+ecx],dl
- ' inc ecx
- ' .endw
- ' mov eax,1
- ' ASM_END:
- ' pop edx
- ' pop ecx
- ' pop ebx
- ' leave
- ' retn 4
- ' BitReverse: ;位反转 输入:dl(0x01) 翻转后输出:dl(0x80)
- ' push ax
- ' push bx
- ' push cx
- ' mov bh,1
- ' mov bl,128
- ' xor ax,ax
- ' .while ah < 8
- ' mov cl,bh
- ' and cl,dl
- ' .if cl
- ' or al,bl
- ' .endif
- ' shl bh,1
- ' shr bl,1
- ' inc ah
- ' .endw
- ' mov dl,al
- ' pop cx
- ' pop bx
- ' pop ax
- ' ret
- 返回 (假)
复制代码 |
|