IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> факториал
сообщение
Сообщение #1


Гость






Помогите зделать задачу факториал рекурсивно на ассемблере.
Вот код на паскале. задача вычисление факториала
uses crt;
var n:byte;

function fack(n:byte):longint;
begin
if n=0 then fack:=1
else fack:=fack(n-1)*n
end;


begin
clrscr;
read(n);
writeln(fack(n));
readkey;

end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






.code
main PROC
push 12 ; Вычислим 12!
; Можешь запрашивать значение у пользователя
call Factorial ; Результат в EAX

ReturnMain:
; Здесь - отображаем результат ...
exit
main ENDP

;-----------------------------------------------------------
Factorial PROC
; Процедуры вычисления факториала.
; Передается: [ebp+8] = n, исходное число, факториал
; которого нужно вычислить
; Возвращается: eax = факториал числа n
;-----------------------------------------------------------
push ebp
mov ebp,esp
mov eax,[ebp+8] ; Загрузим число n
cmp eax,0 ; n > 0?
ja L1 ; Да, продолжим вычисление
mov eax,1 ; Нет, вернем 1
jmp L2
L1:
dec eax
push eax ; Вычислим (n-1)!
call Factorial

; Команды, расположенные в этом месте программы,
; выполняются после возврата из рекурсивной процедуры.

ReturnFact:
mov ebx,[ebp+8] ; Загрузим n
mul ebx ; edx:eax = eax * ebx
L2:
pop ebp ; Выйдем из процедуры

; и возвратим результат в EAX
ret 4 ; Удалим аргумент из стека
Factorial ENDP
END main

Со вводом числа и выводом результата на экран справишься?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
Со вводом числа и выводом результата на экран справишься?

Да. Спасибо большое.
И еще как использовать на азме двухмерные массивы?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

Репутация: -  0  +


Я думаю - надо использовать одномерный массив и дальше получать доступ к элементу a[i,j]=j*n+i, где i,j - координаты, а n - количество элементов в строке.


--------------------
Money, hoes, cars and clothes
That's how all my niggaz know
Blowin dro, 24's
That's how all my niggaz roll...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.05.2024 9:30
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name