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