|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.10.2008, 20:01 | #1 |
C# developer
Форумчанин
Регистрация: 03.10.2007
Сообщений: 393
|
Pascal + assembler
Здраствуйте. Нужна помощ по ассемблеру. Задача следующая. Написать процедуру выисления выражения (2*с - d/4)/(a*a + 1) на ассемблере. Данные ввести с паскаля и вывести результат тоже. Компилятор tasm.
Я сделал так: Код:
Код:
Зараннее всем спасибо.
I like WPF
|
19.10.2008, 20:11 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
ошибка наверно с моделью вызова процедур. в Pascal по умолчанию используется модель вызова register, т.е. параметры передаются через регистры. В ассемблерной процедуре модель вызова похожа на stdcall.
|
19.10.2008, 20:13 | #3 |
C# developer
Форумчанин
Регистрация: 03.10.2007
Сообщений: 393
|
Да вроде нет, я снаала пробывал считать только левую ччастьвсе работает нормально а вот целое выражение нет.
I like WPF
Последний раз редактировалось kommunist; 19.10.2008 в 20:38. |
19.10.2008, 21:35 | #4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
У Вас смещения параметров для модели near, как и указано в коде на asm, а вызов в pascal делается как far (если, конечно, в настройках не указано $F-}.
procedure Raschet(x,y,z; var ch1,ch,del:integer); near; external; И еще по-моему с порядком параметров напутано. В asm'e 16, 18, 20 - (d, c, a), а в pascal передается c, d, a. Это легко проверить. Напишите: Код:
и в Turbo Debug посмотрите какие смещения получатся - в ax увидите переданные значения. ------- Да, еще: умножение a*a - проверьте что на что Вы умножаете и перед делением на слово я бы очистил регистр dx, а при умножении на слово dx задействован - в нем нельзя сохранять промежуточные результаты. Последний раз редактировалось alexBlack; 19.10.2008 в 21:54. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
задачи на С++,assembler,Pascal | Mitron | Фриланс | 1 | 06.01.2008 14:55 |