Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Как правильно записываются вставки ассемблера?  (Прочитано 497 раз)

0 Пользователей и 1 Гость просматривают эту тему.

gityaman

  • Автор темы
  • Гость
Помогите. Имеется программа:
#include <iostream>
#include <fstream>
using namespace std;

int main (){
int a,b,c,d,e,g;
double B;
ofstream os("1.txt");

cout << "Введите 5 ёмкостей (a,b,c,d,e)\n";
cin >> a >> b >> c  >> d >> e;
asm("movw a,%ax;");
asm("add b,%ax;");
asm("add c,%ax;");
asm("add d,%ax;");
asm("add e,%ax;");
asm("movw %ax,g;");
B=1/(double)a+1/(double)b+1/(double)c+1/(double)d+1/(double)e;
cout << "\nПри параллельном= " << g << "\nПри последовательном= " << B;
 os << "При:\n" << a <<"\n"  << b << "\n" << c << "\n" << d << "\n"  << e << "\nПри параллельном= " << g << "\nПри последовательном= " << B;
os << "\nПрограмма вывела суммарную емкость конденсаторов при соответствующи соединениях";
os.close();



return 0;
}
Вставка должна выполнить простую задачу (g=a+b+c+d+e) но не могу понять почему не работает... Ни разу не пробовал использовать вставку... Вот кто может помогите, пожалуйста. :-[

Оффлайн obgorelyi

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Попробуйте почитать вот здесь http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html :).
Вот пример, как два числа складывать:
#include <iostream>
#include <fstream>
using namespace std;

int a = 0;
int asm_test(int g, int a)
{
  __asm__ __volatile__ (
                        ".intel_syntax\n"
                        "add %0, %1 \n"
                        ".att_syntax \n"
                        :"+r"(g)
                        :"r"(a));
  return g;
}

int main()
{
    int a = 10;
    int g = 0;
    int k = asm_test(g,a);
    cout << k;
    cout << "\n";
}

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.