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




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Справочник по системе программирования Турбо Ассемблер 2.0
Автор ""
Размер 416131 Байт
Страница 18 из 51
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

                mov   si,201h
                mov   dl,[si]
                .
                .
                .

     Здесь для сегментного регистра DS  устанавливается  значение
1000h,  SI  устанавливается в значение 201h. Мы можем представить
их в виде 4сегмент:смещение" - 1000:201h. (Эффективные вычисления
для  пары "сегмент:смещение" могут выполняться только по  основа-
нию 16. Это еще одна причина  необходимости познакомиться с шест-
надцатиричной арифметикой.) Адрес в DL,  из которого  загружается
адрес, представляет собой:

     ((DS * 16) + SI) или ((1000h * 16) + 201h)

               1000h
              Х  16
              ------
              10000h

     Этот пример иллюстрируется на Рис. 4.8.

           ---------------------------       ----------------
       DS  |         1000h           |   SI  |     201h     |
           ---------------------------       ----------------
                      |                              |
                      V                              |
            --------------------                     |
           (   умножение на 16  )                    |
           ( /сдвиг влево на 4/ )                    |
            --------------------                     |
                      |                              |
                      V                              |
            ----------------------                   |
            |      10000h        |                   |
            ----------------------                   |
                      |                              |
                      |           -----              |
                      ---------->(  +  )<-------------
                                  -----
                                    |
                                    V
                         -----------------------
       Адрес памяти      |        10201h       |
                         -----------------------

     Рис. 4.8 Вычисление адреса памяти с помощью инструкции mov.

     С другой стороны это можно рассматривать  просто  как  сдвиг
значения  сегмента  на 4 бита,  или одну шестнадцатиричную цифру,
что эквивалентно умножению на 16:

                1000
               + 201
               -----
               10201

     Теперь вы можете видеть, что  программа  получает  доступ  к
полному адресному пространству в 1 мегабайт с помощью использова-
ния только пары "сегмент:смещение". Фактически, для доступа к па-
мяти  вы  всегда должны использовать пару "сегмент:смещение". Все
инструкции и режимы адресации процессора 8086 по умолчанию  рабо-
тают относительно того или иного сегментного регистра, хотя в не-
которых инструкциях можно явно указать,  что  нужно  использовать
желаемый сегментный регистр.

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

     Наиболее общим именем сегмента является @Date, которое в уп-
рощенных директивах определения сегментов используется для ссылки
на используемый по умолчанию сегмент данных. Например:

         DOSSEG
         .MODEL  SMALL
         .DATA
var1     DW      0
         .
         .
         .
         .CODE
         mov     ax,@data
         mov     ds,ax
         .
         .
         .
         END






Здесь регистр DS загружается таким образом, что он будет указывать на используемый по умолчанию сегмент данных, в котором находится Var1. Здесь мы опять забежали вперед: упрощенные директивы опреде- ления сегментов и загрузку сегментных регистров мы обсудим в сле- дующей главе. Использование сегментов процессора 8086 приводит к некоторым интересным моментам. Один из них состоит в том, что только блок памяти размером в 64К в любой момент может адресоваться через сегментный регистр, так как 64К - это максимальный объем памяти, к которой можно адресоваться с помощью 16-битового смещения. Это может оказаться неприятным при работе с большим (более 64К) объ- емом памяти, так как и значение сегментного регистра, и смещение, придется часто изменять. Адресация к большим блокам памяти в процессоре 8086 может представлять еще большую трудность, поскольку, в отличие от ре- гистров общего назначения (общих регистров), сегментные регистры не могут использоваться в качестве источников или приемников в арифметических и логических инструкциях. Фактически, единственная операция, которую можно выполнять с сегментными регистрами, сос- тоит в копировании значений между сегментными регистрами и други- ми общими регистрами или памятью. Например, чтобы добавить значе- ние 100 к регистру ES, потребуется следующее: . . . mov ax,es add ax,100 mov es,ax . . . Из всего этого можно сделать заключение, что процессор 8086 лучше подходит для работы с памятью в блоках, не превышающих 64К. Второй момент использования сегментов состоит в том, что каждая ячейка памяти адресуется через многие возможные сочетания "сегмент:смещение". Например, адрес памяти 100h адресуется с по- мощью следующих значений "сегмент:смещение": 0:100h, 1:F0h, 2:E0h и т.д., так как при вычислении всех этих пар "сегмент:смещение" получается значение адреса 100h. Аналогично регистрам общего назначения каждый сегментный ре- гистр играет свою, конкретную роль. Регистр CS указывает на код программы, DS указывает на данные, SS - на стек, сегмент (сегмен- тный регистр) ES - это "трафаретный" (дополнительный) сегмент, который может использоваться так, как это необходимо. Рассмотрим сегментные регистры более подробно. Регистр CS ----------------------------------------------------------------- Регистр CS указывает на начало блока памяти объемом 64К, или сегмент кода, в котором находится следующая выполняемая инструк- ция. Следующая инструкция, которую нужно выполнить, находится по смещению, определяемому в сегменте кода регистром IP, то есть на нее указывает адрес (в форме "сегмент:смещение") CS:IP. Процессор 8086 никогда не может извлечь инструкцию из сегмента, отличного от того, который определяется регистром CS. Регистр CS можно изменять с помощью многих инструкций, вклю- чая отдельные инструкции перехода, вызовы и возвраты управления. Ни при каких обстоятельствах регистр CS нельзя загрузить непос- редственно. Никакие другие режимы адресации или указатели памяти, отлич- ные от IP, не могут нормально работать относительно регистра CS. Регистр DS ----------------------------------------------------------------- Регистр DS указывает на начало сегмента данных, которые представляет собой блок памяти объемом 64К, в котором находится большинство размещенных в памяти операндов. Обычно для ссылки на адреса памяти используются смещения, предполагающие использование регистров BX, SI или DI. В основном сегмент данных представляет собой то, о чем говорит его название: как правило это сегмент, в котором находится текущий набор данных. Адресация памяти обсужда- ется далее, в Главе 5 "Основные элементы программы на языке Ас- семблера". Регистр ES ----------------------------------------------------------------- Регистр ES указывает на начало блока памяти объемом 64К, ко- торый называется дополнительным сегментом. Как и подразумевает его название, дополнительный сегмент не служит для какой-то конк- ретной цели, но доступен тогда, когда в нем возникает необходи- мость. Иногда дополнительный сегмент используется для выделения дополнительного блока памяти объемом 64К для данных. Однако дос- туп к памяти в дополнительном сегменте менее эффективен, чем дос- туп к памяти в сегменте данных (см. Главу 10 "Развитое программи- рование на Турбо Ассемблере"). Особенно полезен дополнительный сегмент, когда используются


Страницы : 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


adfun.ru









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

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

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

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