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