fork download
  1. section .data
  2. x dd 0
  3. y dd 0
  4. z dd 0
  5. f dd 0
  6. buffer db 11
  7.  
  8. section .text
  9. global _start
  10.  
  11. _start:
  12. ; Введення значень x, y, z
  13. mov rdi, 0 ; Файловий дескриптор (stdin)
  14. mov rsi, buffer ; Буфер для введення
  15. mov rdx, 11 ; Максимальна довжина введення
  16. mov rax, 0 ; Системний виклик для введення
  17. syscall
  18.  
  19. ; Конвертація рядка в число
  20. mov rsi, buffer ; Вказівник на рядок
  21. call str_to_int ; Виклик процедури конвертації
  22.  
  23. ; Виконання розрахунків
  24. mov eax, [y] ; Завантаження значення y в регістр eax
  25. mov ebx, 7
  26. imul ebx, [x] ; Множення ebx на значення x
  27. sub eax, ebx
  28.  
  29. mov ebx, 2
  30. imul ebx, [z] ; Множення ebx на значення z
  31. sub eax, ebx
  32.  
  33. mov ebx, 6
  34. imul ebx, [y] ; Множення ebx на значення y
  35. add ebx, 1
  36. cdq
  37. idiv ebx
  38. mov [f], eax ; Зберігання результату в f
  39.  
  40. ; Конвертація числа в рядок
  41. mov rdi, buffer ; Вказівник на буфер
  42. mov rsi, [f] ; Число для конвертації
  43. call int_to_str ; Виклик процедури конвертації
  44.  
  45. ; Виведення результату
  46. mov rdi, 1 ; Файловий дескриптор (stdout)
  47. mov rax, 1 ; Системний виклик для виведення
  48. mov rsi, buffer ; Вказівник на рядок для виведення
  49. mov rdx, 11 ; Довжина рядка
  50. syscall
  51.  
  52. ; Вихід з програми
  53. mov eax, 60
  54. xor edi, edi
  55. syscall
  56.  
  57. ; Процедура для конвертації рядка в число
  58. str_to_int:
  59. ; код конвертації тут
  60. ret
  61.  
  62. ; Процедура для конвертації числа в рядок
  63. int_to_str:
  64. ; код конвертації тут
  65. ret
  66.  
Success #stdin #stdout 0s 5276KB
stdin
Standard input is empty
stdout