Помощь - Поиск - Пользователи - Календарь
Полная версия: Вызов 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 ƒ(r)«דЎל �.ƒ., 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.