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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2012, 12:28   #1
iLOL
Пользователь
 
Регистрация: 20.05.2012
Сообщений: 12
По умолчанию Числовой ряд (TASM, сопроцессор)

Задача состоит с следующем: с клавы вводим натуральное число n. Надо с точностью до 5ого знака посчитать
(1-(1/2^n))(1+(1/3^n))(1-(1/4^n))…(1-((-1)^(n-1)/n^n))
Желательно в виде макросов конечно. Сам пока что плохо понимаю как работать с сопроцессором, так что надеюсь на вас. Ввод\вывод и прочая есть, интересует сам алгоритм вычисления ряда.
iLOL вне форума Ответить с цитированием
Старый 27.05.2012, 14:50   #2
iLOL
Пользователь
 
Регистрация: 20.05.2012
Сообщений: 12
По умолчанию

Вот код который пока имею. Здесь 3 макроса: (-1)^(n-1), n^n и их деление. Так вот проблема с делением. Хочу поделить 2 целых числа в сопроцессоре, но результат получить вещественный.
Код:
.586p
calcnn		macro n
	mov		ax,1
	mov		bx,n ; что возводим
	mov		cx,n ; во что возводим
nn:	mul		bx
	loop	nn
	mov		tmp1,eax
endm

calcn		macro n
	mov		ax,1
	mov		bx,-1
	mov		cx,n
	dec		cx
	jz		lee
n1:	mul		bx
	loop	n1
lee:mov		tmp2,eax
endm

divc		macro n,tmp1,tmp2
	fld		tmp1
	fld		tmp2
	fdiv	st(0),st(1)
;	fstp	tmp3
endm
;once		macro one,tmp3
;	fld		tmp3
;	fld		one
;	fsub	
	
.model use16 small
.stack 100h

.data
;buff      	db      6,7 dup( ? )
Mes			db      "Введите натуральное число: $"
errMargn	db 		"Числа должны быть натуральными : $"
n			dw		? ;
tmp1		dd		? ;n^n
tmp2		dd		? ;(-1)^(n-1)
tmp3		dd		? ;(-1)^(n-1)/n^n
one			dd		1.
.code
start:
	mov		ax,@data
	mov		ds,ax
	
	mov		dx,offset Mes
	call	string
	call	inint
	mov		n,ax
	call	outint
	call	setnewline

	calcnn	n
	call	outint
	call	setnewline
	calcn	n
	call	outint
	
	call	setnewline
	divc	n,tmp1,tmp2
	call	outfloat

	mov		ah,08h
	int		21h
	mov		ah,4ch
	int		21h

setnewline	proc
...
setnewline	endp

string		proc
...
string 		endp

inint		proc near
...
inint		endp

outint		proc near
...
outint		endp

outfloat	proc near
...
outfloat endp
	
end			start

Последний раз редактировалось iLOL; 27.05.2012 в 16:56. Причина: Обновление кода..
iLOL вне форума Ответить с цитированием
Старый 27.05.2012, 17:01   #3
iLOL
Пользователь
 
Регистрация: 20.05.2012
Сообщений: 12
По умолчанию

апец (десяточка)
Сейчас проблема в том, что при делении -1 на положительное число (n^n) получается бред какой то..

Последний раз редактировалось iLOL; 27.05.2012 в 17:29. Причина: .
iLOL вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разбить числовой ряд на отдельные ячейки jhenya-d Microsoft Office Excel 17 10.11.2011 13:43
Числовой ряд nagabara Фриланс 4 26.06.2011 19:59
Дан числовой ряд и некоторое число e... Xe0n Помощь студентам 1 22.12.2009 21:17
Сопроцессор Max-R Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 19 18.06.2009 23:52