| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > ассемблерная вставка в модели HUGE |
| Автор: somwan 16.4.2014, 19:16 | ||
| Всем привет! Нужна помощь профессионалов. Ассемблер не моя язык, мой С++, ассемблером не занимался, но пришлось включить в проект С++ вставку, написанную на ассемблере. Ниже показана сама вставка.
Раньше, когда модель памяти основног опроекта была COMPACT, всё прекрасно работало. Но с переходам к HUGE отказалось работать. Ясно что проблема в коде вставки т.к. однако где именно непонятно. Прошу помоч дельным советом, что поправить чтобы заработало. Работаю в Borland C++ 3.1. Добавлено через 6 минут и 39 секунд Да вот ещё что уже удалось понять. В показанном коде две процедуры 1 - ipxspx_entry , 2 - ipx_init. Проблема со второй. она получает точку входа в драйвер IPX., которую пишет в переменную ipxspx_drv_entry. При модели COMPACT (когда всё работало) значение данной переменой после работы функции было 4026537600, а после перехода на HUGE стало равно 0!. А т.к. нет точки входа, то при работе первой процедуры на вызове драйвера IPX всё виснит. Да и во второй процедуре в конце стоит ret, с ним вообще виснет, при замене на retf работает, но точка входа равна 0. Вставка сия взята из книги А.Фролова "библиотека системного программиста", и предназначена для инициализации и вызова драйвера IPX для работы с сетью. |
| Автор: somwan 16.4.2014, 21:06 | ||
| Как я и подозревал дело было в полторах закорючках! Нашол книгу "исскуство программирования на ассемблере" в которой нашёл тему о использовании ассемблера совместно с С++. Показанный в первом сообщении код модифицировал следующим образом:
Теперь работает в модели HUGE. Если хочешь сделать что-либо, сделай это сам! Может кому окажется полезно. |