:340.413KB : :1 :2019-12-01 08:15:04
.子程序 内存_读小数型数组_ASM, 逻辑型, , 读取地址 -> 父址+偏移量[1] -> 父址+偏移量[2] -> 父址+偏移量[N] -> 读小数型数组
.参数 读取地址, 整数型
.参数 保存数据, 小数型, 参考 数组
.参数 读取数目, 整数型, 可空, 0=读取保存数据数组成员数目,-1=读到遇{0,0,0,0}返回.指定读取数目 1=4字节
.局部变量 成员数目, 整数型
.局部变量 返回, 逻辑型
成员数目 = 取数组成员数 (保存数据)
.判断开始 (读取数目 = -1)
读取数目 = 内存_取整数型长度_ASM (读取地址) ÷ 4
.判断 (读取数目 = 0 且 成员数目 > 0)
读取数目 = 成员数目
重定义数组 (保存数据, 假, 读取数目)
.默认
.判断结束
.如果真 (读取数目 ≠ 成员数目)
重定义数组 (保存数据, 假, 读取数目)
.如果真结束
' 004033EB 51 push ecx ; 备份
' 004033EC 56 push esi
' 004033ED 57 push edi
' 004033EE 9C pushfd ; 备份
' 004033EF FC cld ; 顺向
' 004033F0 33F6 xor esi, esi ; 地址=0
' 004033F2 8775 08 xchg dword ptr [ebp+8], esi ; 交换
' 004033F5 8B7D 0C mov edi, dword ptr [ebp+0C] ; 参数2
' 004033F8 8B3F mov edi, dword ptr [edi] ; 数组基址
' 004033FA 8B07 mov eax, dword ptr [edi] ; 维数
' 004033FC 40 inc eax ; +基维
' 004033FD 6BC0 04 imul eax, eax, 4 ; 维*4
' 00403400 03F8 add edi, eax ; 数据指针
' 00403402 8B4D 10 mov ecx, dword ptr [ebp+10] ; 长度
' 00403405 F3:A5 rep movs dword ptr es:[edi], dword ptr [esi] ; 短整传送
' 00403407 FF45 08 inc dword ptr [ebp+8] ; 成功
' 0040340A 9D popfd ; 恢复
' 0040340B 5F pop edi
' 0040340C 5E pop esi
' 0040340D 59 pop ecx ; 恢复
' 51 56 57 9C FC 33 F6 87 75 08 8B 7D 0C 8B 3F 8B 07 40 6B C0 04 03 F8 8B 4D 10 F3 A5 FF 45 08 9D 5F 5E 59
置入代码 ({ 81, 86, 87, 156, 252, 51, 246, 135, 117, 8, 139, 125, 12, 139, 63, 139, 7, 64, 107, 192, 4, 3, 248, 139, 77, 16, 243, 165, 255, 69, 8, 157, 95, 94, 89 })
返回 = 读取地址 ≠ 0
返回 (返回)
.子程序 取指针_小数型数组_ASM, 整数型
.参数 小数型数组变量, 小数型, 参考 数组
' 00401130 8B45 08 mov eax, dword ptr [ebp+8] ; EAX=参数1
' 00401133 8B00 mov eax, dword ptr [eax] ; EAX=结构基址
' 00401135 50 push eax ; 保存基址
' 00401136 8B00 mov eax, dword ptr [eax] ; EAX=维数
' 00401138 6BC0 04 imul eax, eax, 4 ; 维数*每维4字节
' 0040113B 83C0 04 add eax, 4 ; +维数4字节
' 0040113E 010424 add dword ptr [esp], eax ; 基址+数组头维数信息所占的字节数
' 00401141 58 pop eax ; EAX=指针
' 00401142 C9 leave
' 00401143 C2 0400 retn 4
' 8B 45 08 8B 00 50 8B 00 6B C0 04 83 C0 04 01 04 24 58 C9 C2 04 00
置入代码 ({ 139, 69, 8, 139, 0, 80, 139, 0, 107, 192, 4, 131, 192, 4, 1, 4, 36, 88, 201, 194, 4, 0 })
返回 (0)
02-17会员管理插件源码
02-16动态创建菜单与响应事件源码,菜单编辑器
02-09画板快捷启动3.2源码修改版
02-09王者荣耀战力小程序源码分享
02-09简单的指定颜色抠图源码
02-05WinLicense授权SDK源码
02-05文本逐字分割源码及优化历程
02-05易语言调用cmd命令并编辑框显示执行结果
09-07C++的string的实现源码分析
10-15易语言word循环插入文字 图片工具源码