Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » asm 16 (dos) -> asm 32 (windows)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

BestGuest



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Натолкнулся на проблему ... Сам немного понимаю asm но программирую в основном на delphi а тут встретил интересную библиотеку а в ней все завязано на асме ... Программа компилируется в obj и включается в тело делфийских модулей Можед быть кто намекнет каким образом нужну изминить инструкции что бы все заработало в Delphi ... Привожу текст самой асмовской проги  
 
;
; The following file contains glue code for calling
; routines defined outside of the "RootsEqu" unit.
;
DATA      SEGMENT  PUBLIC
DATA      ENDS
 
CODE      SEGMENT  PUBLIC
 
          ASSUME   CS:CODE, DS:DATA
 
          PUBLIC   UserFunction, UserProcedure  ;Make routines known
 
;function UserFunction(X : real; ProcAddr : Pointer) : real;
 
UserFunction   PROC FAR
 
               POP      AX             ;Get return address
               POP      BX
               POP      CX             ;Proc offset
               POP      DX             ;Proc segment
               PUSH     BX             ;Push return address
               PUSH     AX
               PUSH     DX
               PUSH     CX
               RET                     ;Jump to proc
 
UserFunction   ENDP
 
;procedure UserProcedure(X : TNcomplex; var Y : TNcomplex; ProcAddr : Pointer);
 
UserProcedure  PROC FAR
 
               POP      AX             ;Get return address
               POP      BX
               POP      CX             ;Proc offset
               POP      DX             ;Proc segment
               PUSH     BX             ;Push return address
               PUSH     AX
               PUSH     DX
               PUSH     CX
               RET                     ;Jump to proc
 
UserProcedure  ENDP
 
CODE           ENDS
               END


Всего записей: 27 | Зарегистр. 15-03-2005 | Отправлено: 11:24 26-04-2005
mr_eoi



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BestGuest
 
Пишем так:
Код:
.model flat
.data
; здесь будут находиться наши данные
.code
; здесь будет программный код
end
И никаких сегментов не надо объявлять вручную.  
 

----------
Per Aspera Ad Astra...

Всего записей: 2187 | Зарегистр. 10-08-2003 | Отправлено: 11:50 26-04-2005 | Исправлено: mr_eoi, 11:55 26-04-2005
BestGuest



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И все ? Воистину всегениальное ...

Всего записей: 27 | Зарегистр. 15-03-2005 | Отправлено: 12:09 26-04-2005
basilevs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для FLAT модели сегментные регистры не учитываем  тогда.
;function UserFunction(X : real; ProcAddr : Pointer) : real;  
UserFunction   PROC FAR  
               POP      EDX
               POP      ECX
               JMP       ECX  ;Jump to proc  
UserFunction   ENDP  
 

Всего записей: 161 | Зарегистр. 09-12-2004 | Отправлено: 14:37 27-04-2005
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » asm 16 (dos) -> asm 32 (windows)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru