fpusin.asm
comment *
ml /c /coff /Fl /Sa fpusin.asm
link /subsystem:console fpusin
*
 
includelib <kernel32.lib>
includelib <user32.lib>
 
.386
.model flat, stdcall
option casemap :none
 
include <windows.inc>
include <kernel32.inc>
include <user32.inc>
 
.const
line	db	'    .    :    .    :    .    :    .    :    .    :    .    :    .    :    .    :', 0dh, 0ah, 0
num_n	dd	12.0
num_o	dd	39.0
num_w	dd	35.0
 
.data?
hConsoleOutput	dd	?
written		dd	?
buf		db	1024 dup (?)
num_t		dd	?
num_dt		dd	?
num_x		dd	?
 
.code
start:
	invoke	GetStdHandle, STD_OUTPUT_HANDLE
	mov	hConsoleOutput, eax
 
	fldpi
	fdiv	num_n
	fstp	num_dt		; dt = pi / n
	mov	num_t, 0
 
	mov	ecx, 24
@@:
	push	ecx
 
	fld	num_t
	fadd	num_dt
	fst	num_t		; t += dt
	fsin
	fmul	num_w
	fadd	num_o
	fistp	num_x		; x = sin(t) * w + o
 
	invoke	lstrcpy, addr buf, addr line
	mov	eax, num_x
	mov	buf[eax], '*'
	invoke	lstrlen, addr buf
	invoke	WriteConsole, hConsoleOutput, addr buf, eax, addr written, NULL
 
	pop	ecx
	loop	@b
 
	invoke	ExitProcess, 0
 
end	start
 

最終更新:2021年09月28日 18:04
添付ファイル