# внешние функции .extern scanf .extern printf .extern puts .section .rodata prompt_integer: .string "Enter alpha: " require_integer: .string "%f" result_format: .string "%f\n" # секция изменяемых данных, здесь хранятся переменные .section .data alpha: .double 0 result: .double 0 # секция кода .section .text .globl main main: call input call eval xor %rax, %rax ret input: # Приглашение к вводу alpha movq $prompt_integer, %rdi xorq %rax, %rax call printf # аргументы scanf movsd alpha, %xmm0 movq $require_integer, %rdi movb $1, %al # Ввод alpha call scanf mov $result_format, %rdi mov $alpha, %rsi xor %rax, %rax call printf ret eval: fldl alpha fcos fstpl result mov $result_format, %rdi mov $alpha, %rsi xor %rax, %rax call printf ret