Пример с факториалом (FASM) - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, уважаемые программисты. Прошу вашей помощи в такой задаче. Нужно написать процедуру по вычислению примера y = ((x! + z) / d)^2. Если можно, как-то попроще записать, в ассемблере полный профан) Заранее спасибо

Решение задачи: «Пример с факториалом (FASM)»

textual
Листинг программы
format PE GUI
include 'win32wxp.inc'
 
.code
  start:
 
        mov     ecx,    [x]
        mov     eax,    1       ;(edx:eax)=x!
        mov     edx,    0
        .factorial:
                mov     esi,    edx
                mul     ecx
                mov     edi,    eax
                mov     ebx,    edx
                mov     eax,    esi
                mul     ecx
                mov     edx,    eax
                add     edx,    ebx
                mov     eax,    edi
        loop    .factorial
 
        add     eax,    [z]
        adc     edx,    0
 
        div     dword [d]
 
        mul      eax
 
        mov     [y],    eax
 
        cinvoke wsprintf, numstr, '%i', eax
        invoke MessageBox, HWND_DESKTOP, numstr, 'y = ((x! + z) / d)^2', MB_OK
        invoke ExitProcess, 0
 
.data
        numstr  rb      15
        x       dd      15
        z       dd      123456
        d       dd      987654321
        y       rd      1
 
.end start

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5