Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> При выполнении прогр. винда её просто выкидывает, программа работает со стеком 
:(
    Опции темы
digitech
Дата 17.11.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



Моя задача написать код на ассемблере для выполнения вот этого примера sqrt(a+b)+sqrt(c/d)
Причём эта программа должна работать со стеком. 
Вот мой код ассемблера (он подключен в программу на паскале через процедуру)
Код

title ex_2
.model large
.data
extrn a:dword, b:dword, c:dword, d:dword, n:dword;
.code
public mat
mat proc far
finit
fld a
fld b
fmul st(0),st(1)
fsqrt
fld c
fld d
fdiv st(1),st(0)
fsqrt
fadd st(0),st(4)
fstp n
ret
mat endp
end

Компилятор скомпилировал этот код без ошибок, однако при выполнении его (с рез. при a=3 b=6 c=18 d=2)
винда просто выкидывает из процессов и паскаль тоже за одно.
Видимо ошибка где-то есть.

А вот код на паскале
Код

program hight;
{$N+}
{$E+}
{$L ch2.obj}
var
a,b,c,d,n:double;
procedure mat(var n:double);external;
begin
writeln('vvedite a,b,c,d');
readln(a,b,c,d);
b:=sqrt(a+b)+sqrt(c/d);
writeln('pascal b=',b);
mat(n);
writeln('assembler b=',n);
readln
end.
 


PM MAIL   Вверх
Den64
Дата 18.11.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: нет
Всего: 2



А почему бы не использовать ассемблерную вставку...
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
digitech
Дата 18.11.2007, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



незнаю?, так в колледже нас учат. А насчёт вставки, то я пробовал, - половина команд чё-та не распознаётся. к примеру finit и т.д.
PM MAIL   Вверх
volvo877
Дата 18.11.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(digitech @  18.11.2007,  17:06 Найти цитируемый пост)
я пробовал, - половина команд чё-та не распознаётся.

Странно. Турбо-Паскаль прекрасно откомпилировал:

Код

program hight;
{$N+}
{$E+}
var
  a, b, c, d, n: double;
begin
  {
    writeln('vvedite a,b,c,d');
    readln(a,b,c,d);
  }
  a := 1; b := 2; c := 3; d := 4;
  writeln('pascal b=',sqrt(a+b)+sqrt(c/d));

  asm
    finit
    fld a
    fld b
    fadd
    fsqrt
    fld c
    fld d
    fdiv
    fsqrt
    fadd
    fstp n
  end;
  writeln('assembler b=',n);
  readln
end.


PM MAIL   Вверх
digitech
Дата 18.11.2007, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



Не знаю, но почему - то в тот момент когда я делал в паскале, - не распознавался finit.
Может я не прописывал $N+ и $E+

Добавлено через 13 минут и 17 секунд
ну щас всё работает
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.