;(2*C-D/2+1)/(A*A+7) FASM 1.65.8
format PE console 4.0
include 'win32a.inc'
invoke GetStdHandle,STD_OUTPUT_HANDLE
jz exit
mov dword [hConsole],eax
invoke SetConsoleTitleA,string
movzx ax,byte [var1]
mov esi,buf1+8
call bintoascii
movzx ax,byte [var2]
mov esi,buf1+16
call bintoascii
movzx ax,byte [var3]
mov esi,buf1+24
call bintoascii
invoke WriteConsoleA,dword [hConsole],buf1,30,buf1,0
movzx cx,byte [var2]
movzx dx,byte [var3]
sal cx,1
sar dx,1
movzx eax,[var1]
sub cx,dx
imul eax
add eax,7
inc cx
xor edx,edx
xchg eax,ecx
idiv cx
mov esi,buf+08h
call bintoascii
invoke WriteConsoleA,dword [hConsole],buf,12,buf,0
invoke Sleep,2000
label exit
invoke NtTerminateProcess,-1,0
var1 db 40; A
var2 db -7; C
var3 db 30; D
hConsole dd ?
buf db 'result= ',' ',' ',' ',' '
buf1 db 'data A= ',' ',' ',' ',' ',' C= ',' ',' ',' ',' ',' D= ',' ',' ',' ',' '
string db '(2*C-D/2+1)/(A*A+7) FASM 1.65.8',0
proc bintoascii
push ecx
mov cl,al
and cl,10000000b
cmp cl,10000000b
je lessthanzero
xor ah,ah
mov cl,10
div cl
mov byte [esi+3],ah
xor ah,ah
div cl
mov byte [esi+2],ah
xor ah,ah
mov byte [esi+1],al
or dword [esi],30303000h
pop ecx
ret
label lessthanzero
xor ah,ah
neg al
mov cl,10
div cl
mov byte [esi+3],ah
xor ah,ah
div cl
mov byte [esi+2],ah
xor ah,ah
mov byte [esi+1],al
or dword [esi],3030302dh
pop ecx
ret
endp
data import
library ntdll,'ntdll.dll',\
kernel32,'kernel32.dll'
import ntdll,\
NtTerminateProcess,'NtTerminateProcess'
import kernel32,\
GetStdHandle,'GetStdHandle',\
WriteConsoleA,'WriteConsoleA',\
Sleep,'Sleep',\
SetConsoleTitleA,'SetConsoleTitleA'
end data