Помощь - Поиск - Пользователи - Календарь
Полная версия: Вызов Asm-модуля
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Jill
Подскажите, куда положить файл addaI.obj, если программа начинается с {$l addaI}?

Сорри, может кривой вопрос, но...
volvo
В текущую директорию - самое надежное... (не зависит от настроек среды программирования)
GoodWind
в папку, которая указана в Options->Directories->include
volvo
GoodWind, blum.gif
А если на другой машине придется компилировать? Так и будет по папкам лазить?

Кстати, не "Include", а "Object directories"
GoodWind
да лан... негде было посмотреть wink.gif
раз директива Include, значит и папка должна быть указана как Include =)
твоя правда yes2.gif
Jill
Ребят, не выходит :-(

Штука в чем. Задача на сложение целых чисел с использованием ассемблера. Пример как раз соответствует моему варианту, а я его запустить не могу :-( Как такового файла addaI.obj в папке с примером нет - создавала сама, но он пустой (я не могу разобраться, должно ли быть что-то в нем и что?)

Файл кидала в указанные вами директории - не запускается прога.

Может, я изначально туплю?



Помогите разобраться, плз! В воскресенье еду на сессию...
Jill
Ребят, пошаманила - прохавало оно {$l addaI}!!!

Тока теперь Undefined exernal(xS)...

Может, перенесем топ в задачи? Не хочу дублировать... Я листинг там кину...
volvo
Кидай исходник ASM и PAS ... Скорее всего - просто в ASM коде процедура/функция не объявлена как "внешняя"
Jill
volvo, там 5 файлов wink.gif
Поразбиралась. Проблема в исходнике только в том, что при выполнении выдает ошибку. Хотя работает и считает, но в самом конце...закрывается паскаль и окошко "невыполнимая функция" (вроде так). Но с этим - фиг с ним! Не первоочередная проблема. Это потом.

volvo, у меня сейчас еще вопрос возник. Исходник - вычисления для пяти типов данных. Мне же надо только для Integer. Я пробовала удалялять лишнее, но прога не находит какие-то переменные, а я не могу найти, где я их поубивала unsure.gif Подскажи, плз!

Цепляю рар - там 5 файлов. Это исходный - без моих правок
volvo
Jill, не знаю, я тут поколдовал немного, чего-то натворил... Проверь...
Jill
запускается smile.gif

токо результат я не успеваю прочитать - все закрывается и выдается ошибка (скриншот цепляю) mega_chok.gif
блин
volvo
Попробуй запустить мой EXE... Если запустится, то проблема с компилятором, если нет - то что-то с NTVDM не то... У меня нормально отрабатывает.
Jill
работает :-)

пасиба, увидела результат - мне больше ничего не надо ;-)

еще пару вопросов по листингу

var {Описание ГЛОБАЛЬНЫХ переменных}
a,b,x : LongInt;
{(*}
xS,aS,bS: ShortInt;
xB,aB,bB: Byte;
{*)}
xI,aI,bI: Integer;
{(*}
xW,aW,bW: Word;
{*)}
ch : Char;



Переменные LongInt, ShortInt, Byte, Word можно поубивать? Или это...черевато?

И в ADDAI.ASM - повырезать все процедуры кроме для Integer?
volvo
Цитата
Переменные LongInt, ShortInt, Byte, Word можно поубивать? Или это...черевато?
Ничем не чревато... Убирай переменные для всего, кроме Integer и файл ASM будет таким:
        title addaL (CopyRight by ƒ®«דЎל �.ƒ., 1993-1997)
.MODEL Large, Pascal
;x=a+b x,a,b:LongInt, Byte, ShortInt, Integer, Word
.data
Extrn xI:Word,aI:Word,bI:Word
.code
Public addaI
addaI proc far
mov ax, aI ; ax <=== aI
mov cx, bI ; cx <=== bI
add ax,cx ; <ax>:=<ax>+<cx>
mov xI,ax ; xI <=== <ax>
ret
addaI endp
end
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.