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


global PrintValue
section .note.GNU-stack noalloc noexec nowrite progbits
section .text

PrintValue:
    push rbx

    mov rbx, 2              ; x = 2
    mov rcx, 1              ; y = 1
    mov r8, 1               ; z = 1

    ; Первая часть: 45 * (y^2 - 2*x)
    mov rax, rcx
    imul rax, rcx           ; y^2

    mov rdx, rbx
    imul rdx, 2             ; 2*x
    sub rax, rdx            ; y^2 - 2*x
    imul rax, 45
    mov r9, rax             ; сохраняем первую часть

    ; Числитель: 45*x + 45*y*x*z
    mov rax, rcx
    imul rax, rbx
    imul rax, r8
    imul rax, 45            ; 45*y*x*z

    mov rdx, rbx
    imul rdx, 45            ; 45*x
    add rax, rdx            ; числитель

    ; Знаменатель: 5*x*(x + 7*y)
    mov r10, rcx
    imul r10, 7
    add r10, rbx            ; x + 7*y
    imul r10, rbx
    imul r10, 5             ; знаменатель

    ; Деление числителя на знаменатель
    cqo                     ; расширяем rax до rdx:rax
    idiv r10                ; частное в rax

    add rax, r9             ; итог: -125

    pop rbx
    ret