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




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

     размер  4  байта  (длинное целое),  он заносится в стек,  как два

     Турбо Ассемблер 3.0/tasm/#2-2                             = 126 =

     16-битовых слова.  В соответствии со стандартом процессоров серии
     8088  наиболее значащее (старшее) слово заносится в стек первым и
     занимает в стеке старшие адреса.

                          Вещественные значения
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Параметры-значения вещественного типа (real) передаются, как
     6 байт в стеке (в Турбо Паскале это тип представляет собой 6-бай-
     товый программно-эмулируемый тип с плавающей точкой).  Это единс-
     твенный тип,  превышающий 4 байта, который может передаваться че-
     рез стек.

      Типы Single, Double, Extended и Comp и типы сопроцессора 8087
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Турбо Паскаль  использует  те же соглашения о передаче пера-
     метров для 8087,  что и семейство компиляторов Borland C++. Пара-
     метры  передаются  через  главный  стек  центрального процессора,
     вместе с остальными параметрами.

                                Указатели
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Значения параметров для всех типов указателей заносятся  не-
     посредственно в стек, как указатели дальнего типа: сначала слово,
     содержащее сегмент, затем другое слово, содержащее смещение. Сег-
     мент занимает старший адрес,  в соответствии с соглашениями фирмы
     Intel.  Для извлечения параметра-указателя в программе Турбо  Ас-
     семблера можно использовать инструкции LDS или LES.

                                 Строки
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Строковые параметры,  независимо от размера,  обычно никогда
     не  заносятся  в стек.  Вместо этого Турбо Паскаль заносит в стек
     указатель (дальнего типа) на строку.  Вызываемая подпрограмма  не
     должна изменять строку,  на которую ссылается указатель. Если это
     необходимо,  подпрограмма может создать и работать с копией стро-
     ки.

          Единственное исключение из этого правила - это случай, когда
     подпрограмма в перекрываемом (оверлейном) модуле A  передает  как
     параметр-значение  строковую константу подпрограмме в перекрывае-
     мом модуле B.  В этом контексте перекрываемый модуль означает лю-
     бой модуль,  скомпилированный  с  директивой  {$O+}  (допускаются
     оверлеи). В этом случае перед тем, как будет сделан вызов и адрес
     стека  будет передан программе в модуле B,  в стеке для строковой
     константы резервируется временная память.

                            Записи и массивы
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
          Записи и массивы,  занимающие ровно 1, 2 или 4 байта, дубли-

     Турбо Ассемблер 3.0/tasm/#2-2                             = 127 =

     руются непосредственно в стек и передаются,  как параметры-значе-
     ния. Если массив или запись имеет какой-либо другой размер (вклю-
     чая 3 байта),  то в стек заносится указатель на этот  массив  или
     запись.  В  этом  случае,  если  подпрограмма  модифицирует такую
     структуру, то она должна создать ее локальную копию.

                                Множества
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Множества, как и строки,  обычно никогда не заносятся непос-
     редственно в стек.  Вместо этого в стек  заносится  указатель  на
     множество.  Первый  бит младшего байта множества всегда соответс-
     твует элементу базового типа (или порождающего типа) с порядковым
     значением 0.

          Единственное исключение из этого правила - это случай, когда
     подпрограмма в перекрываемом (оверлейном) модуле A  передает  как
     параметр-значение константу-множество подпрограмме  в  оверлейном
     модуле  B.  В  этом контексте перекрываемый модуль означает любой
     модуль, компилированный с директивой {$O+} (допускаются оверлеи).
     В этом случае перед тем, как будет сделан вызов и адрес стека бу-
     дет передан программе в модуле B, в стеке для множества-константы
     резервируется  временная память.

                          Параметры-переменные
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Все параметры-переменные  (var) передаются точно также:  как
     указатель дальнего типа на их действительные адреса в памяти.

                            Обеспечение стека
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Турбо Паскаль  ожидает,  что  перед  возвратом управления из
     подпрограммы все параметры в стеке центрального  процессора будут
     удалены.






Есть два способа настройки стека. Вы можете использовать ин- струкцию RET N (где N - это число байт передаваемых, то есть за- несенных в стек, параметров), либо сохранить адрес возврата в ре- гистрах (или в памяти) и извлечь параметры из стека поочередно. Такую технику извлечения полезно использовать для оптимизации по скорости при работе с процессором 8086 или 8088 (самые "медлен- ные" процессоры серии), когда на адресацию типа "база плюс смеще- ние" затрачивается минимум 8 циклов за обращение. Это позволяет также сэкономить место, так как инструкция POP занимает только один байт. Примечание: Если вы используете директивы .MODEL, PROC и ARG, то Ассемблер автоматически добавляет во все инструк- ции RET число байт извлекаемых параметров. Турбо Ассемблер 3.0/tasm/#2-2 = 128 = Доступ к параметрам ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Когда получает управление ваша подпрограмма на Турбо Ассемб- лере, вершина стека будет содержать адрес возврата (два или четы- ре слова, в зависимости от того, является ли подпрограмма ближней или дальней), а далее будут находится передаваемые параметры. Примечание: При вычислении адресов параметров нужно принимать во внимание регистры, такие как BP, содержимое которых также может быть занесено в стек.) Существует три основных метода доступа к параметрам, переда- ваемых Турбо Паскалем вашей подпрограмме на Турбо Ассемблере. Вы можете: - использовать для адресации к стеку регистр BP; - для получения параметров использовать другой базовый или индексный регистр; - извлечь из стека адрес возврата, а затем параметры. Первый и второй методы более сложны, и мы расскажем о них в следующих двух разделах. Третий метод предусматривает извлечение из стека и сохранение адреса возврата, а затем извлечения пара- метров и записи их в регистры. Лучше всего этот метод работает, когда ваша подпрограмма не требует пространства для локальных пе- ременных. Использование для адресации к стеку регистра BP ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Первый и наиболее часто используемый метод доступа к пара- метрам, передаваемым из Турбо Паскаля в Турбо Ассемблер, заключа- ется в том, чтобы использовать для адресации к стеку регистр BP. Например: CODE SEGMENT ASSUME CS:CODE MyProc PROC FAR ; procedure MyProc(i,j : integer); PUBLIC MyProc j EQU WORD PTR [bp+6] ; j находится над сохраненным BP ; и адресом возврата i EQU WORD PTR [bp+8] ; i располагается над j push bp ; нужно сохранить BP вызывающей ; программы mov bp,sp ; BP теперь указывает на вершину ; стека mov ax,i ; адресуемся к i через BP . . . Турбо Ассемблер 3.0/tasm/#2-2 = 129 = При вычислении смешений в стеке параметров, к которым мы об- ращаемся таким образом, нужно помнить, что 2 байта используются для сохраненного регистра BP. Обратите внимание на использование в данном примере присваи- ваний. Они позволяют сделать программу более понятной. У них есть только один недостаток: поскольку для выполнения такого рода при- сваиваний можно использовать только директиву EQU (а не =), в данной исходном файле Турбо Ассемблера вы не сможете переопреде- лить идентификаторы i и j. Один из способов обойти это заключает- ся в том, чтобы использовать более описательные имена параметров, чтобы они не повторялись, либо можно ассемблировать каждую подп- рограмму Ассемблера отдельно. Директива ARG ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Хотя можно обращаться к параметрам через регистр BP, Турбо Ассемблер предусматривает альтернативу вычислению смещений в сте- ке и выполнению текстовых присваиваний. Это директива ARG. При использовании ее в процедуре директива ARG автоматически опреде- ляет смещения параметров относительно регистра BP. Она вычисляет также размер блока параметров и использует его в инструкции RET. Поскольку идентификаторы, создаваемые по директиве ARG, определе- ны только в соответствующей процедуре, в каждой процедуре или функции вам не требуется использовать уникальные имена парамет- ров.


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