Факториал на assembler
Нужно добавить факториал, не пойму как в ассемблере он устроен. Вот код, который получилось сделать:
format PE64 console
entry main
include 'D:\FASM\INCLUDE\win64ax.inc'
section '.data' data writable
n dq 5
resultStr db 16 dup (" ")
str_fmt db "%s",10,0
int_fmt db "%d",0
Message db "Press any key ...",0
section '.text' code executable
proc main
xor rbx, rbx ;int S=0;
mov rax, 1 ;int f=1;
mov rcx, 1 ;for(int k=1; k<=n; k++)
.for: ;{
imul rax, rcx ; f= f*k; // imul k
neg rax ; f= -f; // neg eax
add rbx, rax ; S=S+f;
inc rcx
cmp rcx, [n]
jb .for ;}
cinvoke sprintf, resultStr, int_fmt, rsi
cinvoke printf, str_fmt, resultStr
cinvoke printf, str_fmt, Message
cinvoke getch
xor rax,rax
ret
endp
section '.idata' import data readable writeable
library msvcrt,'MSVCRT.DLL'
import msvcrt,\
sprintf, 'sprintf',\
printf, 'printf',\
getch, '_getch'
