Загрузка данных


global PrintValue
section .note.GNU-stack
section .text
PrintValue:
        xor rax,rax         ; rax = S, общая сумма
        mov rcx,1           ; rcx = n
        mov r8,1            ; r8 = n!
outer:
        imul r8,rcx         ; n! = (n-1)! * n
        xor r9,r9           ; r9 = T(n), внутренняя сумма
        mov rsi,1           ; rsi = l
        mov rdi,-1          ; rdi = (-1)^l, для l=1 это -1
inner:
        mov r10,rsi
        add r10,500         ; l + 500, то есть (l^2+500l)/l
        imul r10,rdi        ; умножаем на (-1)^l
        add r9,r10          ; T += слагаемое
        neg rdi             ; меняем знак для следующего l
        inc rsi
        cmp rsi,rcx
        jle inner           ; пока l <= n
        mov r11,r8
        lea r11,[r11+2*rcx] ; r11 = n! + 2n
        imul r11,r9         ; (n!+2n) * T(n)
        add rax,r11         ; S += ...
        inc rcx
        cmp rcx,8
        jle outer           ; пока n <= 8
        ret                 ; в rax = -2456523