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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2016, 10:33   #1
Ярослав777
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 17
По умолчанию Подскажите, что не так в ассемблерной вставке

В ответе всегда получается 0.....



#include<stdafx.h>
#include<iostream>
#include<conio.h>
#include<math.h>
#include<locale.h>
#include<stdio.h>
using namespace std;


float main()
{
setlocale(LC_ALL, "russian");
float a, b, c, d, e, x, Result;

cout << "Введите число a: ";
cin >> a;
cout << "Введите число b: ";
cin >> b;
cout << "Введите число c: ";
cin >> c;
cout << "Введите число d: ";
cin >> d;
cout << "Введите число e: ";
cin >> e;
cout << "Введите число x: ";
cin >> x;



__asm {
xor eax, eax
mov eax, a
imul eax, x
add eax, b
mov Result, eax
xor eax, eax
mov eax, c
imul eax, x
imul eax, x
xor edx, edx
mov edx, eax
xor eax, eax
mov eax, d
imul eax, x
add eax, edx
add eax, e
xor edx, edx
mov ebx, eax
mov eax, Result
div ebx
mov Result, eax




}
cout<<"C_Result = "<< (a*x+b)/(c*x*x+d*x+e)<<endl;
cout<<"ASM_Result = "<<Result;
_getch();
return 0;
}
Ярослав777 вне форума Ответить с цитированием
Старый 27.11.2016, 11:39   #2
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

А почему тип float? На int замените, авось поможет.
vadimych вне форума Ответить с цитированием
Старый 27.11.2016, 15:56   #3
Ярослав777
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 17
По умолчанию

Тогда везде нули выдает...
Ярослав777 вне форума Ответить с цитированием
Старый 27.11.2016, 16:16   #4
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Смотря что вводишь. Если числитель окажется < знаменателя тогда 0 и выведутся. Задай к примеру a=b=100 остальные 1.
Если хочешь использовать числа с плавающей точкой используй FPU.

Последний раз редактировалось Мановар; 27.11.2016 в 16:49.
Мановар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему в ассемблерной вставке не работают метки mseshuk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 18.10.2015 15:06
Комментарии к ассемблерной вставке Feelnoobskill Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 05.06.2013 04:18
Работа с массивом в ассемблерной вставке Fabeldyr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 27.10.2011 15:01
Метка в ассемблерной вставке EugenK Общие вопросы C/C++ 12 12.09.2011 13:49
Как вызвать функцию в ассемблерной вставке, зная адрес iceman2112 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 04.05.2010 13:38