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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2010, 14:14   #1
Hunter557
Пользователь
 
Аватар для Hunter557
 
Регистрация: 20.02.2010
Сообщений: 15
По умолчанию нужно запрограмировать коротко и без лишних операций уравнение

запрограмировать на простом ассемблере для комп'ютеров
(я просто новичёк в этой области)
Изображения
Тип файла: bmp ia.bmp (182.2 Кб, 164 просмотров)
Hunter557 вне форума Ответить с цитированием
Старый 05.04.2010, 14:43   #2
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

x dq 3.0 ;
N dd 2 ;Входные данные

Код:
        fld qword[x]     ;Загружаем X 
	fld st0             ;  st1=st0
	fmul st0,st0     ; st0= x^2
	faddp st1,st0   ; st1 - > st0=  st1+st0 = x^2 + x
	fld1                ; st0 = 1 , st0 -> st1
	fsubp st1,st0   ; st1 -> st0 = x^2+x - 1
	fsqrt              ; sqrt st0
		
	mov eax,1       ; eax = factorial
	mov ecx,[N]    
	factCycle:
	mul ecx          ; eax * ecx
	dec ecx         ; ecx = ecx - 1
	cmp ecx,0      ; if ecx ! = 0 
	jne factCycle  ; jump to factCycle
	mov [N],eax    ; N = factorial
	fidiv dword[N]  ; st0 = числитель дроби
	fstp qword[x]   ; сохраняем результат вычислений в x
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 05.04.2010, 15:09   #3
Hunter557
Пользователь
 
Аватар для Hunter557
 
Регистрация: 20.02.2010
Сообщений: 15
По умолчанию

СПС! только один вопрос - что это (x dq 3.0 ) ?
Hunter557 вне форума Ответить с цитированием
Старый 05.04.2010, 15:35   #4
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

при N=0 неверно
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 14.04.2010, 22:32   #5
Hunter557
Пользователь
 
Аватар для Hunter557
 
Регистрация: 20.02.2010
Сообщений: 15
По умолчанию

я вот так написал но не знаю как продолжить - не могу понять как факториал дальше запрограмировать ,и ещё х- может быть не целое число...

.model small
.stack 100h
.data
x dw
y dw?
.code
begin
mov ax,@data
mov ds,ax
finit
fldx
fldx
fmul
fldx
fadd
fld1
fsub

а вот как дальше делать ?
Hunter557 вне форума Ответить с цитированием
Старый 15.04.2010, 05:06   #6
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Hunter557
наверное вот так
Код:
.code
Start: mov ax,@data
        mov ds,ax
	cmp N,1; сравниваем N с единицей
	jna a2; если больше 1 -> вычисляем факториал	
	mov ax,N; если N равно 0 или 1, тогда факториал=1
	dec N
a1:	mul N
	dec N
	jnz a1
	mov fact,ax; вычислили факториал
a2:	finit; инициализируем сопроцессор
	fld X; загрузили Х
	fld st; копировали верхушку стека
	fmul st,st; получили квадрат Х
	fadd; получили X^2 +X
	fld1; загрузили единицу
	fsub; X^2 +X-1
	fsqrt;sqrt(X^2 +X-1)
	fidiv fact; sqrt(X^2 +X-1)/N!
	fstp Y;   Y:=sqrt(X^2 +X-1)/N!
	mov ax,4C00h; конец программы
        int 21h
.data
X dd 2.0
N dw 5; может быть от 0 до 8 включительно
fact dw 1
Y dd ?
end Start

Последний раз редактировалось Mikl___; 15.04.2010 в 05:37.
Mikl___ вне форума Ответить с цитированием
Старый 15.04.2010, 07:37   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что это (x dq 3.0 ) ?
Это переменная если не ошибаюсь типа DOUBLE, короче вещественная.
8 байтов по-моему занимает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.04.2010, 10:23   #8
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

x dd 3.0 переменная типа короткое вещественное (float), значения от +/-1,18*10^-38 до +/-3,4*10^38, занимает 4 байта
y dq 3.0 переменная типа длинное вещественное (long, double), значения от +/-2,23*10^-308 до +/-1,79*10^308, занимает 8 байт
z dt 3.0 переменная типа расширенное вещественное (long double), значения от +/-3,37*10^-4932 до +/-1,18*10^4932, занимает 10 байт
Mikl___ вне форума Ответить с цитированием
Старый 15.04.2010, 19:10   #9
Hunter557
Пользователь
 
Аватар для Hunter557
 
Регистрация: 20.02.2010
Сообщений: 15
По умолчанию

вот так правильно точно (проверил) но это только первая половина а вот ни один предложенный вариант решения факториала не был правильным...
помогите с факториалом...как дальше продолжить программу?

.model small
.stack 100h
.data
x dt 2.0 (здесь может быть любое число как целое так и нет)
y dt ?
.code
begin:
mov ax,@data
mov ds,ax
finit
fld x
fld x
fmul
fld x
fadd
fld1
fsub
fsqrt
Hunter557 вне форума Ответить с цитированием
Старый 15.04.2010, 22:15   #10
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

Код:
	mov ax,1
	cmp N,1; сравниваем N с единицей
	jna a1
a2:	mul N
	dec N
	jnz a2
a1:
	mov fact,ax; вычислили факториал
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru

Последний раз редактировалось airyashov; 15.04.2010 в 22:18.
airyashov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно запрограмировать на assembler Hunter557 Помощь студентам 3 21.02.2010 19:14
Вывод без лишних символов Billy Spleen Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 26.01.2010 12:47
Как без лишних функций записать файл в string? TwiX Общие вопросы Delphi 10 24.08.2009 12:16
Деление без арифметических операций imera Общие вопросы C/C++ 2 14.11.2008 03:02
Нужно вставить счетчик операций в прогу плиз хелп! Tanzilit Помощь студентам 2 12.12.2007 17:01