Ассемблер. Факториал числа. Коментарии к программе

Надо написать 2 проги: 1- Считает факториал отрицательног числа 2- Считает факториал положительного числа И написать к этим прогам коментарии: что, где и зачем!!!!! Ребята выручайте, очень надо как можно скорее!!!!
4 ответа

function Factorial(n: integer): integer; begin if N > 1 then Factorial := N*Factorial(N-1) else Factorial := 1; end;


Спасибо огромное за помощ, но там пишется как-то по - другому, там сначала, по-моему в блокноте, а потом через командную строку запускаешь этот текстовый файл, но с расширением (блин чисто на память, что-то в универе говорили) asm, или что-то в этом роде. Если в курсе "о чем я", то помоги плиз!!!


;==== NASM syntax вроде бы ; ; file: factorial.asm ; This program demonstrates local variables and recursion ; %include "asm_io.inc" segment .data prompt db "Enter a number: ", 0 ans_msg db "! is ", 0 segment .bss input1 resd 1 input2 resd 1 segment .text factorial: ; ; This procedure expects one unsigned integer (n>0) on the stack. ; It returns n! in eax ; push *** mov ***,esp sub esp,4 ;make space for a local variable (at ***-4) mov eax,[***+8] ;put parameter in eax cmp eax,0 je done ;if we were finding 0! mov [***-4],eax ;else store eax in our local variable dec eax ;compute n-1 push eax ;put it on the stack call factorial ;and find (n-1)! ;oops! forgetting to remove param from stack. see * mul dword [***-4] ;then multiply it by our saved value jmp epilog ;and return it done: mov eax,1 epilog: mov esp,*** ;restore esp (skip over local variables) ; Note *: saved, because we fix esp no matter what ; DON'T DO THIS. I left it in for educational purposes only pop *** retglobal _asm_main _asm_main: enter 0,0 ; setup routine pusha mov eax, prompt call print_string call read_int call print_int push eax mov eax,ans_msg call print_string call factorial add esp,4 ;remove parameter from stack call print_int call print_nl popa mov eax, 0 ; return back to C leave ret


Спасибо огромное, выручил! (если конечно это в том виде который мне нужен). А ты мне можешь объяснить "по-русски": что в этой программе происходит последовательно (построчно)? И она сразу считает и "+" и "-" числа?