xorshift.asm
comment *
MASM32 SDK
ml /c /coff xorshift.asm
link /subsystem:console xorshift
*
 
includelib <kernel32.lib>
includelib <user32.lib>
 
.386
.model flat, stdcall
option casemap:none
 
include <windows.inc>
include <kernel32.inc>
include <user32.inc>
 
rand32 proto stdcall
 
.const
format		db	"%2d %08x", 0dh, 0ah, 0
 
.data
seed		dd	2463534242
 
.data?
hStdOut		dd	?
 
.code
 
main		proc
		local	written :dword
		local	buf[1024+1] :byte
 
		invoke	GetStdHandle, STD_OUTPUT_HANDLE
		mov	hStdOut, eax
 
		mov	ebx, 0
	@@loop:
		invoke	rand32
		invoke	wsprintfA, addr buf, addr format, ebx, eax
		invoke	lstrlenA, addr buf
		invoke	WriteConsoleA, hStdOut, addr buf, eax, [written], NULL
		inc	ebx
		cmp	ebx, 10
		jb	@@loop
 
		invoke	ExitProcess, 0
main		endp
 
rand32		proc
		mov	eax, seed
		mov	edx, eax		; y = y ^ (y << 13)
		shl	edx, 13
		xor	eax, edx
		mov	edx, eax		; y = y ^ (y >> 17)
		shr	edx, 17
		xor	eax, edx
		mov	edx, eax		; y = y ^ (y << 15)
		shl	edx, 15
		xor	eax, edx
		mov	seed, eax
		ret
rand32		endp
 
end main
 

最終更新:2018年08月27日 09:32
添付ファイル