|
本帖最后由 CNWTEPRG 于 2020-4-9 21:59 编辑
* “耗时(毫秒):” | 9.672000
* 数组:100{19,13,38,74,32,52,49,75,28,98,67,100,3,20,70,90,6,39,45,87,46,27,92,50,44,79,5,9,17,30,96,7,78,23,18,40,2,42,53,68,12,41,83,82,47,65,81,14,55,63,22,54,95,72,64,57,33,10,77,35,4,71,84,60,59,91,85,97,8,99,94,21,31,93,69,25,86,43,26,61,51,66,11,89,34,56,76,29,15,37,48,16,62,88,80,73,24,58,1,36}
- .版本 2
- .支持库 spec
- .程序集 程序集1
- .子程序 _启动子程序, 整数型
- 置随机数种子 ()
- _临时子程序 ()
- 返回 (0)
- .子程序 _临时子程序
- .局部变量 数组, 短整数型, , "0"
- .局部变量 时间, 整数型
- .局部变量 A, 短整数型
- .局部变量 B, 短整数型
- 时间 = 取启动时间 ()
- .计次循环首 (1000, )
- 取不重复短随机数表 (32767, 数组)
- .计次循环尾 ()
- 调试输出 (“耗时(毫秒):”, (取启动时间 () - 时间) ÷ 1000)
- 取不重复短随机数表 (100, 数组)
- 调试输出 (数组)
- .子程序 取不重复短随机数表, 逻辑型, 公开, 快速产生一个从1到指定值的,不重复随机数数组,成功返回真失败返回假
- .参数 数量, 短整数型, , 必须大于等于1,使用短整数因为 取随机数() 最大只支持32767
- .参数 数组变量, 短整数型, 参考 数组, 数组将通过此变量传出
- .局部变量 计数, 整数型
- .局部变量 随机数, 短整数型
- .判断开始 (数量 ≤ 0)
- 返回 (假)
- .判断 (取数组成员数 (数组变量) ≠ 数量)
- 重定义数组 (数组变量, 真, 数量)
- .默认
- .判断结束
- 置入代码 ({ 80, 83, 81, 82, 139, 69, 12, 139, 0, 139, 88, 4, 131, 192, 8, 51, 201, 102, 186, 1, 0, 235, 7, 102, 137, 20, 72, 65, 102, 66, 59, 203, 114, 245, 90, 89, 91, 88 })
- ' push eax
- ' push ebx
- ' push ecx
- ' push edx
- ' mov eax,[ebp+12]
- ' mov eax,[eax]
- ' mov ebx,[eax+4]
- ' add eax,8
- ' xor ecx,ecx
- ' mov dx,1
- ' .while ecx < ebx
- ' mov [eax+ecx*2],dx
- ' inc ecx
- ' inc dx
- ' .endw
- ' pop edx
- ' pop ecx
- ' pop ebx
- ' pop eax
- .计次循环首 (数量, 计数)
- .循环判断首 ()
- 随机数 = 取随机数 (1, 数量)
- .循环判断尾 (随机数 = 计数 且 数量 > 2)
- 交换短整数 (数组变量 [计数], 数组变量 [随机数])
- .计次循环尾 ()
- 返回 (真)
- .子程序 交换短整数
- .参数 A, 短整数型, 参考
- .参数 B, 短整数型, 参考
- 置入代码 ({ 96, 139, 69, 8, 139, 93, 12, 102, 139, 8, 102, 139, 19, 102, 137, 16, 102, 137, 11, 97 })
- ' pusha
- ' mov eax,[ebp+8]
- ' mov ebx,[ebp+12]
- ' mov cx,[eax]
- ' mov dx,[ebx]
- ' mov [eax],dx
- ' mov [ebx],cx
- ' popa
复制代码 |
|