section .data
prompt db "Enter a number (1-10): ", 0 ; Повідомлення для введення числа
result_message db "Factorial is: ", 0 ; Повідомлення для виведення результату
newline db 0xA, 0
section .bss
num resb 1 ; Змінна для збереження введеного числа
section .text
global _start
_start:
; Вивести запит
mov eax, 4 ; Системний виклик для виведення
mov ebx, 1 ; Файл - стандартний вихід
mov ecx, prompt ; Вказівка на повідомлення
mov edx, 24 ; Довжина повідомлення
int 0x80 ; Виклик системи
; Читання введеного числа
mov eax, 3 ; Системний виклик для вводу
mov ebx, 0 ; Файл - стандартний вхід
mov ecx, num ; Місце для збереження введеного числа
mov edx, 1 ; Читати 1 байт
int 0x80 ; Виклик системи
; Перетворити введений символ в ціле число
sub byte [num], '0' ; Перетворення ASCII в ціле число
; Ініціалізація змінних
mov al, [num] ; Взяти введене число
mov bl, al ; Копія числа для факторіалу
mov cl, 1 ; Стартове значення факторіала
factorial_loop:
; Перемножуємо факторіал
mul cl ; AL = AL * CL (результат у AX)
mov al, ah ; Копіюємо результат у AL
dec bl ; Зменшуємо число
jnz factorial_loop ; Якщо число не нульове, продовжуємо цикл
; Вивести результат
mov eax, 4 ; Системний виклик для виведення
mov ebx, 1 ; Файл - стандартний вихід
mov ecx, result_message ; Повідомлення для результату
mov edx, 14 ; Довжина повідомлення
int 0x80 ; Виклик системи
; Вивести результат факторіалу (тут потрібно реалізувати конвертацію числа в рядок)
; Вивести новий рядок
mov eax, 4
mov ebx, 1
mov ecx, newline
mov edx, 1
int 0x80
; Завершити програму
mov eax, 1 ; Системний виклик для завершення
xor ebx, ebx ; Код повернення
int 0x80
c2VjdGlvbiAuZGF0YQogICAgcHJvbXB0IGRiICJFbnRlciBhIG51bWJlciAoMS0xMCk6ICIsIDAgIDsg0J/QvtCy0ZbQtNC+0LzQu9C10L3QvdGPINC00LvRjyDQstCy0LXQtNC10L3QvdGPINGH0LjRgdC70LAKICAgIHJlc3VsdF9tZXNzYWdlIGRiICJGYWN0b3JpYWwgaXM6ICIsIDAgICA7INCf0L7QstGW0LTQvtC80LvQtdC90L3RjyDQtNC70Y8g0LLQuNCy0LXQtNC10L3QvdGPINGA0LXQt9GD0LvRjNGC0LDRgtGDCiAgICBuZXdsaW5lIGRiIDB4QSwgMAoKc2VjdGlvbiAuYnNzCiAgICBudW0gcmVzYiAxICAgICAgICA7INCX0LzRltC90L3QsCDQtNC70Y8g0LfQsdC10YDQtdC20LXQvdC90Y8g0LLQstC10LTQtdC90L7Qs9C+INGH0LjRgdC70LAKCnNlY3Rpb24gLnRleHQKICAgIGdsb2JhbCBfc3RhcnQKCl9zdGFydDoKICAgIDsg0JLQuNCy0LXRgdGC0Lgg0LfQsNC/0LjRggogICAgbW92IGVheCwgNCAgICAgICAgICAgOyDQodC40YHRgtC10LzQvdC40Lkg0LLQuNC60LvQuNC6INC00LvRjyDQstC40LLQtdC00LXQvdC90Y8KICAgIG1vdiBlYngsIDEgICAgICAgICAgIDsg0KTQsNC50LsgLSDRgdGC0LDQvdC00LDRgNGC0L3QuNC5INCy0LjRhdGW0LQKICAgIG1vdiBlY3gsIHByb21wdCAgICAgIDsg0JLQutCw0LfRltCy0LrQsCDQvdCwINC/0L7QstGW0LTQvtC80LvQtdC90L3RjwogICAgbW92IGVkeCwgMjQgICAgICAgICAgOyDQlNC+0LLQttC40L3QsCDQv9C+0LLRltC00L7QvNC70LXQvdC90Y8KICAgIGludCAweDgwICAgICAgICAgICAgIDsg0JLQuNC60LvQuNC6INGB0LjRgdGC0LXQvNC4CgogICAgOyDQp9C40YLQsNC90L3RjyDQstCy0LXQtNC10L3QvtCz0L4g0YfQuNGB0LvQsAogICAgbW92IGVheCwgMyAgICAgICAgICAgOyDQodC40YHRgtC10LzQvdC40Lkg0LLQuNC60LvQuNC6INC00LvRjyDQstCy0L7QtNGDCiAgICBtb3YgZWJ4LCAwICAgICAgICAgICA7INCk0LDQudC7IC0g0YHRgtCw0L3QtNCw0YDRgtC90LjQuSDQstGF0ZbQtAogICAgbW92IGVjeCwgbnVtICAgICAgICAgOyDQnNGW0YHRhtC1INC00LvRjyDQt9Cx0LXRgNC10LbQtdC90L3RjyDQstCy0LXQtNC10L3QvtCz0L4g0YfQuNGB0LvQsAogICAgbW92IGVkeCwgMSAgICAgICAgICAgOyDQp9C40YLQsNGC0LggMSDQsdCw0LnRggogICAgaW50IDB4ODAgICAgICAgICAgICAgOyDQktC40LrQu9C40Log0YHQuNGB0YLQtdC80LgKCiAgICA7INCf0LXRgNC10YLQstC+0YDQuNGC0Lgg0LLQstC10LTQtdC90LjQuSDRgdC40LzQstC+0Lsg0LIg0YbRltC70LUg0YfQuNGB0LvQvgogICAgc3ViIGJ5dGUgW251bV0sICcwJyAgOyDQn9C10YDQtdGC0LLQvtGA0LXQvdC90Y8gQVNDSUkg0LIg0YbRltC70LUg0YfQuNGB0LvQvgoKICAgIDsg0IbQvdGW0YbRltCw0LvRltC30LDRhtGW0Y8g0LfQvNGW0L3QvdC40YUKICAgIG1vdiBhbCwgW251bV0gICAgICAgIDsg0JLQt9GP0YLQuCDQstCy0LXQtNC10L3QtSDRh9C40YHQu9C+CiAgICBtb3YgYmwsIGFsICAgICAgICAgICA7INCa0L7Qv9GW0Y8g0YfQuNGB0LvQsCDQtNC70Y8g0YTQsNC60YLQvtGA0ZbQsNC70YMKICAgIG1vdiBjbCwgMSAgICAgICAgICAgIDsg0KHRgtCw0YDRgtC+0LLQtSDQt9C90LDRh9C10L3QvdGPINGE0LDQutGC0L7RgNGW0LDQu9CwCgpmYWN0b3JpYWxfbG9vcDoKICAgIDsg0J/QtdGA0LXQvNC90L7QttGD0ZTQvNC+INGE0LDQutGC0L7RgNGW0LDQuwogICAgbXVsIGNsICAgICAgICAgICAgICAgOyBBTCA9IEFMICogQ0wgKNGA0LXQt9GD0LvRjNGC0LDRgiDRgyBBWCkKICAgIG1vdiBhbCwgYWggICAgICAgICAgIDsg0JrQvtC/0ZbRjtGU0LzQviDRgNC10LfRg9C70YzRgtCw0YIg0YMgQUwKICAgIGRlYyBibCAgICAgICAgICAgICAgIDsg0JfQvNC10L3RiNGD0ZTQvNC+INGH0LjRgdC70L4KICAgIGpueiBmYWN0b3JpYWxfbG9vcCAgIDsg0K/QutGJ0L4g0YfQuNGB0LvQviDQvdC1INC90YPQu9GM0L7QstC1LCDQv9GA0L7QtNC+0LLQttGD0ZTQvNC+INGG0LjQutC7CgogICAgOyDQktC40LLQtdGB0YLQuCDRgNC10LfRg9C70YzRgtCw0YIKICAgIG1vdiBlYXgsIDQgICAgICAgICAgIDsg0KHQuNGB0YLQtdC80L3QuNC5INCy0LjQutC70LjQuiDQtNC70Y8g0LLQuNCy0LXQtNC10L3QvdGPCiAgICBtb3YgZWJ4LCAxICAgICAgICAgICA7INCk0LDQudC7IC0g0YHRgtCw0L3QtNCw0YDRgtC90LjQuSDQstC40YXRltC0CiAgICBtb3YgZWN4LCByZXN1bHRfbWVzc2FnZSAgOyDQn9C+0LLRltC00L7QvNC70LXQvdC90Y8g0LTQu9GPINGA0LXQt9GD0LvRjNGC0LDRgtGDCiAgICBtb3YgZWR4LCAxNCAgICAgICAgICA7INCU0L7QstC20LjQvdCwINC/0L7QstGW0LTQvtC80LvQtdC90L3RjwogICAgaW50IDB4ODAgICAgICAgICAgICAgOyDQktC40LrQu9C40Log0YHQuNGB0YLQtdC80LgKCiAgICA7INCS0LjQstC10YHRgtC4INGA0LXQt9GD0LvRjNGC0LDRgiDRhNCw0LrRgtC+0YDRltCw0LvRgyAo0YLRg9GCINC/0L7RgtGA0ZbQsdC90L4g0YDQtdCw0LvRltC30YPQstCw0YLQuCDQutC+0L3QstC10YDRgtCw0YbRltGOINGH0LjRgdC70LAg0LIg0YDRj9C00L7QuikKCiAgICA7INCS0LjQstC10YHRgtC4INC90L7QstC40Lkg0YDRj9C00L7QugogICAgbW92IGVheCwgNAogICAgbW92IGVieCwgMQogICAgbW92IGVjeCwgbmV3bGluZQogICAgbW92IGVkeCwgMQogICAgaW50IDB4ODAKCiAgICA7INCX0LDQstC10YDRiNC40YLQuCDQv9GA0L7Qs9GA0LDQvNGDCiAgICBtb3YgZWF4LCAxICAgICAgICAgICA7INCh0LjRgdGC0LXQvNC90LjQuSDQstC40LrQu9C40Log0LTQu9GPINC30LDQstC10YDRiNC10L3QvdGPCiAgICB4b3IgZWJ4LCBlYnggICAgICAgICA7INCa0L7QtCDQv9C+0LLQtdGA0L3QtdC90L3RjwogICAgaW50IDB4ODA=