Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2019, 17:06   #1
victory44
Новичок
Джуниор
 
Регистрация: 12.03.2019
Сообщений: 1
По умолчанию Факториал на ассемблере!

Здравствуйте, очень нужна помощь.
Есть задача, в которой считается факториал,но только для чисел до 9. ( в шестнадцетеричной системе)
Необходимо,чтобы считалось для любых чисел в том числе и для нуля.
Понимаю, что проблемы с памятью, но ассемблер плохо понимаю поэтому не знаю как исправить. Прилагаю код:

Код:
.DATA SEGMENT 
N DB 06H 
FACT DW ? 
DATA ENDS 
.CODE SEGMENT 
ASSUME CS:CODE, DS:DATA 
START: 
MOV AX, DATA 
MOV DS, AX 
MOV AX, 1 
MOV BL, 9
MOV BH, 0 
CALL FACTORIAL 
MOV FACT, AX 
MOV AH, 4CH 
INT 21H 

FACTORIAL PROC 
CMP BX, 1 
JE L1 
PUSH BX 
DEC BX 
CALL FACTORIAL 
POP BX 
MUL BX 
L1: RET 
FACTORIAL ENDP 
CODE ENDS 
END START
______________________
Используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Serge_Bliznykov; 12.03.2019 в 17:38.
victory44 вне форума Ответить с цитированием
Старый 12.03.2019, 17:33   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
чтобы считалось для любых чисел
для 100 тоже? Уже 13! не уместится в двойное слово. А уж у 100! 158 цифр в результате )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 12.03.2019 в 17:37.
Аватар вне форума Ответить с цитированием
Старый 12.03.2019, 17:48   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Цитата:
Сообщение от victory44 Посмотреть сообщение
Необходимо,чтобы считалось для любых чисел
для 100 тоже?
вот прямо с языка сняли!


Факториал ОЧЕНЬ быстро растущая функция.
Цитата:
Сообщение от victory44 Посмотреть сообщение
Код:
MUL BX
результат умножения помещается в паре 16-ти разрядных регистров DX:AX
там может поместится число не более 4294836225
максимальный факториал, который может туда поместиться, это 12!=479001600

так что Вы не горячитесь с "любыми числами".
Или смотрите в сторону длинной арифметики. (но на Ассемблере это будет совсем не просто!)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО][Python] факториал, Фибоначчи: в ходе выполнения в цикле все последующие значения факториалов перемножаются с предыдущими, а хочу чтоб выводился факториал конкретного числа Staniislav Помощь студентам 2 19.08.2017 23:57
Вычислить факториал числа п. Факториал числа представить в виде целочисленного массива десятичных цифр. M1kefly Общие вопросы C/C++ 1 07.07.2013 21:00
Как запрограмировать на ассемблере факториал? Hunter557 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 04.04.2010 19:39