来水一发,汇编- Include masm32rt.inc
- .const
- Table DB 'ACBDFEGHIKJLMOPQNRSTUVWXYZadcbefhigjklnmpoqsrtuvwzyx6578902314'
- .data?
- Input db 5 dup (?)
- Num dd ?
- Align 10h
- Buffer db 9*10000+1 dup (?)
- .code
- Start:
- Invoke ArgClC,1,Offset Input
- Sub esp,4
- Invoke atodw_ex,Offset Input
- Mov Num,Eax
- Add Esp,4
-
- Lea Esi,Table
- Mov Ecx,Eax
-
- .Repeat
- Push Ecx
- Lea Edi,Buffer
- Mov Ecx,10000
- Align 10h
- .Repeat
- Push Ecx
- Invoke nrandom,26
- Lea Eax,[Eax+65]
- StoSB
- Mov Ecx,6
- Align 4h
- .Repeat
- Push Ecx
- Invoke nrandom,SizeOf Table
- Mov Al,[Eax+Esi]
- StoSB
- Pop Ecx
- .UntilCxZ
- Mov Ax,0A0DH
- Mov Word Ptr [Edi],Ax
- Inc Edi
- Inc Edi
- Pop Ecx
- .UntilCxZ
- Xor Eax,Eax
- StoSB
- Invoke StdOut,Offset Buffer
- Pop Ecx
- .UntilCxZ
-
-
- Invoke ExitProcess,NULL
- End Start
复制代码 I3 CPU+机械
100w个,输出到控制台,40s(真感人)
输出到txt,220ms
直接>nul,180ms
test 要生成的数目/1w
生成100w:test 100
代码将指令、数据对齐到内存4整数倍地址,提高速度
随机数生成使用masmlib中的函数,不涉及api调用,浮点计算
由于懒得调api得时间做种子,目前种子固定。 |