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




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

     также, должна удалять аргументы из стека после  вызова  процедуры
     сама процедура или вызывающая программа.  Языка Си и С++ требуют,
     чтобы стек очищала вызывающая программа.  Во всех  других  языках
     процедура должна  сама удалить аргументы из стека перед возвратом
     управления.

          Турбо Ассемблер с помощью расширенной  инструкции  CALL  сам
     выполняет за  вас функции по занесению аргументов в стек в нужном
     порядке и очисткой стека.  Вызов процедуры  с  параметрами  имеет
     следующий синтаксис:

          CALL выражение [язык] [,список_аргументов]

     где "выражение" является целью инструкции CALL, "язык" задает ис-
     пользуемые при вызове языковые соглашения.  Если  вы  не  задаете
     язык, Турбо  Ассемблер  использует по умолчанию язык,  заданный в
     директиве MODEL.

                Примечание: О директиве MODEL более подробнее  расска-
           зывается в Главе 7.

          Аргументы, если они имеются, указываются после идентификато-
     ра языка.  Синтаксис каждого аргумента в списке совпадает с  син-
     таксисом, который  используется  в расширенных инструкциях PUSH и
     POP. Вы можете разделить эти аргументы запятыми, например:

          CALL test PASCAL,ax,es OFFSET buffer,blen

     Турбо Ассемблер 3.0/tasm/#2-2                              = 23 =

          Поскольку в данном примере указан Паскаль,  Турбо  Ассемблер
     будет заносить аргументы в стек в том порядке, в котором они ука-
     заны.  Этот пример эквивалентен следующим инструкциям:

          PUSH ax
          PUSH es OFFSET buffer
          PUSH word PTR blen
          CALL test

          Вызов процедуры  Си  требует,  чтобы  аргументы заносились в
     стек в обратном порядке.  Турбо Ассемблер делает это автоматичес-
     ки, поэтому вызов вида:

          CALL test C,ax,es OFFSET buffer, word PTR blen

     даст в результате следующий код:

          PUSH word PTR blen
          PUSH es OFFSET buffer
          PUSH ax
          CALL test
          SUB sp,8

          При вызове процедуры с аргументами аргументы в списке следу-
     ет всегда указывать  в том порядке, в котором они следуют в заго-
     ловке процедуры.  При  необходимости  Турбо Ассемблер изменяет их
     порядок на обратный.

          Нужно не забывать разделять аргументы запятыми, а компоненты
     аргументов -  пробелами.  В  зависимости от соглашений указанного
     языка Турбо Ассемблер может заносить аргументы в стек  в обратном
     порядке, но порядок компонентов аргумента он не изменяет.

          Если при   вызове   используются   интерфейсные   соглашения
     NOLANGUAGE, Турбо Ассемблер при наличии любого аргумента сообщает
     об ошибке. Хотя аргументы для процедуры NOLANGUAGE можно задать с
     помощью директивы ARG, при вызове такой процедуры требуется явное
     занесение аргументов в стек.

                 Вызываемые процедуры, содержащие RETURNS
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Процедуры, определяющие  некоторые из своих аргументов с по-
     мощью ключевого слова RETURNS  требуют  отдельного  рассмотрения.
     Эти  аргументы  используются  для  возврата значений в вызывающую
     программу.  Таким образом,  вызывающая программа всегда извлекает
     их из стека.  Чтобы способствовать передаче этих аргументов, зад-
     анных  в описании процедуры после директивы RETURNS,  в Турбо Ас-
     семблере  нет специальных расширений инструкции CALL.  Перед инс-
     трукцией CALL вы должны явным образом занести  аргументы  в  стек
     (PUSH), а потом извлечь их их стека (POP).

     Турбо Ассемблер 3.0/tasm/#2-2                              = 24 =

           Вызов процедур методов для объектов: CALL...METHOD
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
          Инструкция CALL расширена таким образом,  чтобы поддерживать
     методы объектов. Вызов метода объекта может генерировать либо не-
     посредственный вызов  (для  статических методов),  либо косвенный
     вызов (для виртуальных методов).

          Поскольку вы можете использовать косвенный вызов,  выполняю-
     щие вызов инструкции  могут нарушить содержимое некоторых регист-
     ров. В этом случае,  если вы используете вызов виртуального мето-
     да, Турбо Ассемблер позволяет вам выбрать соответствующие регист-
     ры.
          Приведем синтаксис расширения CALL...METHOD:





CALL указатель_экземпляра METHOD [имя_объекта:]имя_метода [USES [сегм_регистр:]регистр_смещения] [язык_и_аргументы] где "указатель_экземпляра" должен описывать экземпляр объекта. В режиме MASM часто невозможно определить имя объекта, связанного с экземпляром. В этом случае Турбо Ассемблер позволяет использовать поле "имя_объекта", благодаря чему вы можете задать имя экземпля- ра объекта. Поле "имя_метода" содержит имя метода, который должен вызы- ваться для конкретного экземпляра объекта. Примечание: О том, как задавать виртуальных или стати- ческий метод, подробнее рассказывается в Главе 8. Если метод является виртуальным,и требуется косвенный вызов, инструкция CALL...METHOD выполняет косвенный вызов через регистры ES:BX (ES:EBX для модели USE32 процессора 80386). Если вы хотите использовать другие регистры, можно переопределить их с помощью оператора USES. Поле "сегм_регистр" это необязательный используе- мый сегментный регистр, а "регистр_смещения" - это регистр смеще- ния, используемый для вызова. Для объектов, описанных с помощью таблиц NEAR, CALL...METHOD загружает только регистр смещения. Турбо Ассемблер предполагает, что сегментный регистр всегда установлен в корректное значение. Примечание: Хорошей практикой программирования явля- ется соответствующий вызов методов с помощью косвенного вызова, даже когда вы знаете, что вызываемый метод являет- ся статическим. При модификации объектов методы могут из- мениться со статических на виртуальные. Поле "язык_и_аргументы" инструкции CALL...METHOD содержит необязательные спецификации языка и аргументов, которые идентичны по форме описанным в предыдущем разделе. Вызов процедур методов для С++ и Паскаля требует обычно, Турбо Ассемблер 3.0/tasm/#2-2 = 25 = чтобы экземпляр объекта передавался в качестве аргумента в стеке. Подробнее об этом рассказывается в Главе 18 и Главе 19. Остаточная рекурсия для методов объектов: инструкция JMP...METHOD ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Турбо Ассемблер обеспечивает инструкцию JMP...METHOD, соот- ветствующую инструкции CALL...METHOD. Она имеет следующий син- таксис: JMP указатель_экземпляра METHOD [имя_объекта:]имя_метода [USES [сегм_регистр:]регистр_смещения] Инструкция JMP...METHOD полностью аналогична инструкции CALL...METHOD, за исключением того, что она: - генерирует вместо инструкции CALL инструкцию JMP; - генерирует код завершения процедуры для очистки стека пе- ред генерацией инструкции JMP. Инструкция JMP...METHOD позволяет писать эффективный код остаточной рекурсии (tail recursion). Она предназначена для заме- ны общей ситуации, когда инструкция CALL...METHOD дается для конкретного метода с последующей инструкцией RET. Дополнительные инструкции для объектного программирования ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД При создании экземпляра объекта требуется инициализировать указатель таблицы виртуальных методом объекта (если он имеется), чтобы он указывал на корректную таблицу виртуальных методов. Ин- струкция TBLINIT позволяет вам сделать это автоматически. Эта ин- струкция имеет следующий синтаксис: TBLINIT указатель_экземпляра_объекта Поле "указатель_экземпляра__объекта" представляет собой ад- рес объекта, указатель таблицы виртуальных методов которого нужно инициализировать. Инструкция TBLINIT предполагает, что экземпляр объекта должен иметь тип текущего объекта (другими словами, не- посредственно предшествующее определение объекта определяет объ- ектный тип, который инициализирует TBLINIT). Например: TBLINIT DS:ST инициализирует указатель таблицы виртуальных методов объекта DS: SI (если она имеется). Турбо Ассемблер 3.0/tasm/#2-2 = 26 = Глава 14. Использование макрокоманд ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Макрокоманды позволяют вам задавать имя идентификатора для текстовой строки или блока кода, которые будут часто использо- ваться в программе. Однако макрокоманды выходят за рамки простой подстановки. В Турбо Ассемблере имеются макрооперации, обеспечи- вающие большую гибкость в определении макрокоманд. В сочетании с


Страницы : 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
Форумы политика, лучшие анекдоты
знакомства.