global PrintValue
section .note.GNU-stack
section .text
PrintValue:
push rbx
mov rax,0
mov rdx,0
mov bx,2 ; bx :=x
; 2z^2
mov ax,4 ; ax := z
mul ax ; ax := z*z
add ax,ax ; ax:=2*z^2
mov cx,ax ; cx:=2z^2
; y^2
mov ax,3 ; ax :=y
mul ax ; ax:=y*y
; (y^2+2z^2)
add ax,cx ; ax:= y^2+2z^2
mov cx,ax ; cx:= (y^2+2z^2)
; 13x
mov ax,13 ; ax:=13
mul bx ; ax:=13*x
; 13x*(y^2 + 2z^2)
mul cx ; ax:= первая часть выр-я
push ax
; знаменатель 2-й части
; 3y^2
mov ax, 3
mul ax
mov cx, 3
mul cx ; ax:= 3*9=27
mov cx,ax ; cx:= 27
; 5x
mov ax, 5
mul bx ; ax:=5*2=10
; 5x+3y^2
add cx, ax ; cx:=27+10=37
push cx
; числитель 2-й части
; (x+2y)
mov ax, 3 ; ax:=y
mov cx, 2 ; cx:=2
mul cx ; ax:=2*y
add ax, bx ; ax:=2y+x (8)
; (x+2y)^2
mul ax ;ax:=8*8
; 23*(x+2y)^2
mov cx, 23 ; cx:=23
mul cx ; ax:=64*23
mov cx, ax
;5z^2
mov ax, 4 ; ax:=z (4)
mul ax ; ax:= z^2
mov bx, 5 ; bx:=5
mul bx ; ax:=16*5
; 1ч + 2ч числителя
add ax, cx ; ax:= 80+1472
; делим числитель на знаменатель
pop cx
mov rdx, 0
div cx ; ax:=(dx:ax) / cx
pop cx
add ax, cx ; прибавим 1 часть ax:=41+1066=1107
push ax
; 3-я часть выражения
mov bx, 2
mov ax, 4 ; ax:=4
mul bx ; ax:=4*x
mov cx, ax
mov ax, 3
mul ax
mul cx
mov cx,4 ; cx:=z(4)
mul cx ; ax:= 72*4
pop cx
sub cx, ax ; cx:=1107-288=819
mov rax, 0
mov ax, cx
pop rbx
ret