BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо Ассемблер 3.0/tasm/#2-2
Автор ""
Размер 465209 Байт
Страница 30 из 54
СКАЧАТЬ КНИГУ ЦЕЛИКОМ



     Турбо Ассемблер 3.0/tasm/#2-2                             = 118 =

            Совместное с Турбо Паскалем использование данных
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Далее следует содержимое главы.

             Директива компилятора $L и внешние подпрограммы
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Два ключевых момента при использовании  Турбо  Ассемблера  с
     Турбо Паскалем - это директива компилятора (Турбо Паскаля) {$L} и
     описание   внешней   (external)   подпрограммы.   Директива   {$L
     MYFILE.OBJ}  приводит к тому, что Турбо Паскаль будет искать файл
     объектный MYFILE.OBJ (файл в стандартном пригодном для компоновки
     формате MS-DOS) и компоновать его с вашей программой Турбо Паска-
     ля.  Если у файла в директиве {$L} расширение не указывается,  то
     подразумевается расширение .OBJ.

          Каждая процедура или функция Турбо  Ассемблера,  которую  вы
     хотите сделать доступной в программе Турбо Паскаля, должна объяв-
     ляться, как идентификатор PUBLIC, и ей должно  соответствовать  в
     программе описание external (внешняя). Синтаксис описания внешней
     процедуры или функции в  Турбо  Паскале  аналогичен  опережающему
     (forward) описанию:

          procedure AsmProc(a : integer; b : real); external;

          function AsmFunc(c : word; d : byte); external;

          Эти описания должны соответствовать  следующим  описаниям  в
     программе Турбо Ассемблера:

          CODE        SEGMENT BYTE PUBLIC
          AsmProc     PROC NEAR
                      PUBLIC AsmProc
                      .
                      .
                      .
          AsmProc     ENDP
          AsmFunc     PROC FAR
                      PUBLIC Bar
                      .
                      .
                      .
          AsmFunc     ENDP
          CODE        ENDS

          Описание внешней (external) процедуры Турбо  Паскаля  должно
     находиться на самом внешнем уровне программы или модуля,  то есть
     оно не должно быть вложенным по отношению к другому описанию про-
     цедуры или функции.  Попытка описать процедуру или функцию на лю-
     бом другом уровне приведет к ошибке этапа компиляции.

          Турбо Паскаль не делает проверку, чтобы убедиться,  что  все

     Турбо Ассемблер 3.0/tasm/#2-2                             = 119 =

     процедуры,  описанные  с  атрибутами  NEAR или FAR, соответствуют
     ближним или дальним подпрограммам в программе Турбо Паскаля. Фак-
     тически,  он  даже  не  проверяет,  являются  ли  метки AsmProc и
     AsmFunc именами процедур. Поэтому  вы  должны  обеспечить,  чтобы
     описания в Ассемблере и Паскале были правильными.

                            Директива PUBLIC
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          В Турбо Паскале доступны только те метки Ассемблера, которые
     объявлены   в  модуле  на  языке  Ассемблера,  как  общедоступные
     (PUBLIC). Метки представляют собой единственные объекты,  которые
     могут  передаваться  из  языка  Ассемблера в Турбо Паскаль. Более
     того, каждой общедоступной метке должно  соответствовать описание
     процедуры или функции в программе Турбо Паскаля, иначе компилятор
     выдаст сообщение об ошибке. Причем не требуется,  чтобы  общедос-
     тупная метка была частью описания PROC. Что касается Турбо Паска-
     ля, то для него описания:

          AsmLabel     PROC  FAR
                       PUBLIC Bar
     и

          AsmLabel:
                       PUBLIC Bar

     эквивалентны.

          Вы можете определять такие идентификаторы как  PUBLIC только
     в сегменте CODE. Турбо Паскаль не разрешает определения идентифи-
     каторов PUBLIC в сегменте данных,  поэтому создаваемые  вами  ас-
     семблерные  модули  для  компоновки с программой на Турбо Паскале
     также не должны иметь в сегменте данных.

                             Директива EXTRN
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД






Модуль Турбо Ассемблера может обращаться к любой процедуре, функции, переменной или типизованной константе Турбо Паскаля, ко- торая описывается на самом внешнем уровне программы или модуля, с которым она компонуется. (Заметим, что это включает в себя пере- менные, описанные после директивы компилятора {$L} и внешние опи- сания, связанные с данным модулем.) Метки и обычные константы Турбо Паскаля языку Ассемблера недоступны. Примечание: Эти включает в себя переменные, указанные после директивы компилятора $L и описаниях external, свя- занных с данным модулем. Предположим, в вашем программе Турбо Паскаля описываются следующие глобальные переменные: var Турбо Ассемблер 3.0/tasm/#2-2 = 120 = a : byte; b : word; c : shortint; d : integer; e : real; f : single; g : double; h : extended; i : comp; j : pointer; В программе на языке Ассемблера вы можете получить доступ ко всем этим переменным с помощью описаний EXTRN: EXTRN A : BYTE ; 1 байт EXTRN B : WORD ; 2 байта EXTRN C : BYTE ; в Ассемблере значения со знаком и ; без знака интерпретируются одинаково EXTRN D : WORD ; то же самое EXTRN E : FWORD ; 6-байтовое действительное значение ; (обрабатывается программно) EXTRN F : DWORD ; 4-байтовое значение с плавающей ; точкой в формате IEEE EXTRN G : QWORD ; 8-байтовое значение с плавающей ; точкой (двойной точности) в ; формате IEEE EXTRN H : TBYTE ; 10-байтовое значение с плавающей ; точкой во временном формате EXTRN I : QWORD ; 8-байтовое целое со знаком в ; формате IEEE (сопроцессор 8087) EXTRN J : DWORD ; указатель Турбо Паскаля Аналогичным образом можно получить доступ к процедурам и функциям Турбо Паскаля, включая библиотечные. Предположим, у вас имеется модуль Турбо Паскаля, который выглядит следующим образом: unit Sample; { Пример модуля, в котором определяется нескольку процедур Паскаля, вызываемых из процедуры на языке Ассемблера } interface procedure TestSample; procedure PublicProc; { для обращения извне должна быть дальнего типа } inplementation var A : word; procedure AsmProc; external; {$L ASMPROC.OBJ} Турбо Ассемблер 3.0/tasm/#2-2 = 121 = procedure PublicProc; begin { PublicProc } Writeln('В PublicProc'); end { PublicProc } procedure NearProc; { должна быть ближнего типа } begin { NearProc } Writeln('B NearProc'); end; { NearProc } {$F+} procedure FarProc { должна иметь дальний тип согласно директиве компилятора } begin { FarProc } Writeln('B FarProc'); end { FarProc } {$F-} procedure TestSample; begin { TestSample } Writeln('B TestSample'); A := 10; Writeln('Значение A перед ASMPROC = ',A); AsmProc; Writeln('Значение A после ASMPROC = ',A); end { TestSample };


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [30] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.