powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Рекурсивное вычисление факториала(на tasm)
3 сообщений из 3, страница 1 из 1
Рекурсивное вычисление факториала(на tasm)
    #36029325
tailer552
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карочь, задача такая : Вычислить факториал числа N!=N(N-1)(N-2)....1=N(N-1)! с помощью рекурсивной программы написанной на ассемблере. Очень нужна помощь, сам писал, чушь получается, в ассемблере нифига не понимаю. Нужно до понедельника!!!! Очень срочно!!!!!
...
Рейтинг: 0 / 0
Рекурсивное вычисление факториала(на tasm)
    #36029398
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tailer552,
ничего не понимаю. Какой ассемблер? Какой бюджет?
...
Рейтинг: 0 / 0
Рекурсивное вычисление факториала(на tasm)
    #36029469
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tailer552,

Тасма под руками нет.. Но держи на AT&T.
компилить gcc factorial.s


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
////////  factorial.s
	.section	.rodata
.InputMsg:
	.string	"Input number : "
.ErrorMsg:
	.string	"Incorrect number\n"
.InputMask:
	.string	"%u"
.OutputMsg:
	.string	"Answer: %u\n"
.TooBigMsg:
	.string	"Number too big\n"

	.text
	.type	factorial, @function
factorial:
	enter	$ 4 ,$ 0 
	pushl	%edx
	cmpl	$ 1 ,  8 (%ebp)
	jle	.L2
	movl	 8 (%ebp), %eax
	subl	$ 1 , %eax
	movl	%eax, (%esp)
	call	factorial
	xorl	%edx, %edx
	imull	 8 (%ebp)
	test	%edx,%edx
	jz	.L4
	xorl	%eax,%eax
.L4:
	movl	%eax, - 4 (%ebp)
	jmp	.L3
.L2:
	movl	$ 1 , - 4 (%ebp)
.L3:
	movl	- 4 (%ebp), %eax
	popl	%edx
	leave
	ret
	
	.text
.globl main
	.type	main, @function
main:
	enter	$ 4 ,$ 0 
	
	pushl	$.InputMsg
	call	printf
	add	$ 4 ,%eax

	leal	- 4 (%ebp),%eax
	push	%eax
	pushl	$.InputMask
	call	scanf
	addl	$ 8 ,%esp

	test	%eax,%eax
	jnz	.correct
	pushl	$.ErrorMsg
	call	printf
	addl	$ 4 ,%esp
	movl	$ 1 ,%eax
	jmp	.exit

.correct:
	movl	- 4 (%ebp),%eax
	pushl	%eax
	call	factorial
	addl	$ 4 , %esp
	test	%eax,%eax
	jnz	.correct2
	pushl	$.TooBigMsg
	call	printf
	addl	$ 4 , %esp
	movl	$ 1 , %eax
	jmp	exit
.correct2:
	pushl	%eax
	pushl	$.OutputMsg
	call	printf
	addl	$ 8 ,%esp
	
	xorl	%eax, %eax
.exit:
	leave
	ret
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Рекурсивное вычисление факториала(на tasm)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]