_word_RandA和_word_RandB其实是由一个dword数拆成的两个word数(因为这是16位汇编),且
_word_RandB是高字,_word_RandA是低字。
16位汇编的伪随机数算法
sub_20D00 proc far
push 41C6h
push 4E6Dh
push word_40F72 ; word_RandomH
push word_40F70 ; word_RandomL
call __aFlmul
add ax, 3039h
adc dx, 0
mov word_40F70, ax
mov word_40F72, dx ; dx:ax=dword_Random
mov ax, dx
and ah, 7Fh
retf
sub_20D00 endp
和32位汇编的伪随机数算法
sub_4472FC proc near
mov eax, dword_453B20
imul eax, 41C64E6Dh
add eax, 3039h
mov dword_453B20, eax
and eax, 7FFF0000h
shr eax, 10h
retn
sub_4472FC endp
应该是等效的。
[ 本帖最后由 阿尔法孝直 于 2011-12-16 19:16 编辑 ]