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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2020, 10:11   #1
pro100_igor4k
 
Регистрация: 01.10.2020
Сообщений: 5
Восклицание Задания(assembler)

Не пойму где ошибка. Цель программы решить пример где х и шаг на сколько меняется х во время цикла вводит пользователь.

Y = (11 * х2-12) / (5 * x2 + 8*x-2)

Код:
#include <iostream>
using namespace std;
int main() // початок програми на С++
{
	long X, s; // змінна для аргументу
	long REZ[7]; // змінна для результату

	cin >> X;
	cin >> s;

	_asm {; початок асемблерної вставки
	lea EBX, REZ; завантаження адреси результатів в регістр EBX
		mov ECX, 7; лічильник кількості повторень циклу
		mov ESI, s;
		m1 : mov EAX, 5; EAX = 5
		imul X; EAX = 5 * x
		imul X; EAX = 5 * x2
		mov EDX, 8; EDX = 8
		imul X; EDX = 8 * x
		add EAX, EDX; EAX = 5 * x2 + 8 * x
		sub EAX, 2; EAX = 5 * x2 + 8 * x - 2
		mov EDI, EAX; пересилання знаменника в регістр EDI
		mov EAX, 11; EAX = 11
		imul X; EAX = 11 * x
		imul X; EAX = 11 * x2
		sub EAX, 12; EAX = 11 * x2 – 12
		cdq; розширення операнда - ділимого в EAX - EDX
		div EDI; часне – EAX, залишок – EDX
		shr EDI, 1; ділення знаменника на 2
		cmp EDI, EDX; порівняння половини дільника з залишком
		adc EAX, 0; додавання до часного заєму від порівняння
		mov dword ptr[EBX], EAX; пересилання результату в пам’ять
		add EBX, 4; збільшення адреси результатів
		add X, ESI; збільшення аргументу
		loop m1;
	} // закінчення асемблерної вставки
	for (int i = 0; i < 7; i++)
	{
		cout << REZ[i] << endl;
	}
}
pro100_igor4k вне форума Ответить с цитированием
Старый 01.10.2020, 21:14   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от pro100_igor4k Посмотреть сообщение
Код:
		mov EDX, 8; EDX = 8
		imul X; EDX = 8 * x
Вот это что?
Восьмёрка пошла в edx, да, но imul этого не знает и умножает всё тот же eax
Black Fregat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задания по assembler SsAn Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 22.05.2015 21:52
Куплю задания по Assembler VinChaser Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 19.12.2012 23:56
Assembler, два задания DimR Фриланс 2 01.05.2011 19:21
Нужно сделать задания по ASSembler !! zuboff Фриланс 1 16.08.2010 09:50
Необходима помощь в реализации задания. Assembler. Graddva Помощь студентам 5 15.09.2007 19:39