fork download
  1. section .data
  2. prompt db "Enter a number (1-10): ", 0 ; Повідомлення для введення числа
  3. result_message db "Factorial is: ", 0 ; Повідомлення для виведення результату
  4. newline db 0xA, 0
  5.  
  6. section .bss
  7. num resb 1 ; Змінна для збереження введеного числа
  8.  
  9. section .text
  10. global _start
  11.  
  12. _start:
  13. ; Вивести запит
  14. mov eax, 4 ; Системний виклик для виведення
  15. mov ebx, 1 ; Файл - стандартний вихід
  16. mov ecx, prompt ; Вказівка на повідомлення
  17. mov edx, 24 ; Довжина повідомлення
  18. int 0x80 ; Виклик системи
  19.  
  20. ; Читання введеного числа
  21. mov eax, 3 ; Системний виклик для вводу
  22. mov ebx, 0 ; Файл - стандартний вхід
  23. mov ecx, num ; Місце для збереження введеного числа
  24. mov edx, 1 ; Читати 1 байт
  25. int 0x80 ; Виклик системи
  26.  
  27. ; Перетворити введений символ в ціле число
  28. sub byte [num], '0' ; Перетворення ASCII в ціле число
  29.  
  30. ; Ініціалізація змінних
  31. mov al, [num] ; Взяти введене число
  32. mov bl, al ; Копія числа для факторіалу
  33. mov cl, 1 ; Стартове значення факторіала
  34.  
  35. factorial_loop:
  36. ; Перемножуємо факторіал
  37. mul cl ; AL = AL * CL (результат у AX)
  38. mov al, ah ; Копіюємо результат у AL
  39. dec bl ; Зменшуємо число
  40. jnz factorial_loop ; Якщо число не нульове, продовжуємо цикл
  41.  
  42. ; Вивести результат
  43. mov eax, 4 ; Системний виклик для виведення
  44. mov ebx, 1 ; Файл - стандартний вихід
  45. mov ecx, result_message ; Повідомлення для результату
  46. mov edx, 14 ; Довжина повідомлення
  47. int 0x80 ; Виклик системи
  48.  
  49. ; Вивести результат факторіалу (тут потрібно реалізувати конвертацію числа в рядок)
  50.  
  51. ; Вивести новий рядок
  52. mov eax, 4
  53. mov ebx, 1
  54. mov ecx, newline
  55. mov edx, 1
  56. int 0x80
  57.  
  58. ; Завершити програму
  59. mov eax, 1 ; Системний виклик для завершення
  60. xor ebx, ebx ; Код повернення
  61. int 0x80
Success #stdin #stdout 0s 5252KB
stdin
Standard input is empty
stdout
Enter a number (1-10): Factorial is: