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


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