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




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

 После  mov   ax,bx0:          -------------------------------
                          AX   |              9              |
                               -------------------------------
                               -------------------------------
                          BX   |              9              |
                               -------------------------------

     Заметим, что значение 9 не перемещается  из  BX  в  AX,  оно
просто копируется из регистра BX в регистр AX.

     В инструкции MOV можно использовать почти любую пару операн-
дов, что имеет смысл за исключением того случая, когда в качестве
операнда используется сегментный регистр (этот случай мы  обсудим
далее  в  разделе "Обращение к сегментным регистрам"). В качестве
операнда-источника (правого операнда) инструкции  MOV  можно  ис-
пользовать  следующее: константу, выражение, при вычислении кото-
рого получается константа, общий регистр или ячейку памяти,  дос-
тупную с помощью одного из режимов адресации, описанного в разде-
ле "Режимы адресации памяти". В качестве операнда-приемника  (ле-
вого  операнда) инструкции MOV может использоваться общий регистр
или ячейка памяти.



                         Выбор размера данных
-----------------------------------------------------------------

     В языке Ассемблера с помощью инструкции MOV можно копировать
байты  или  значения  размером в слово. Давайте рассмотрим, каким
образом Турбо Ассемблер определяет, с каким размером данных нужно
работать.

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

          .
          .
          .
          mov   al,1             ; байт
          mov   dx,si            ; слово
          mov   bx,[dl]          ; слово
          mov   [bp+si+2],al     ; байт
          .
          .
          .

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

          .
          .
          .
          .DATA
 TestChar           DB   ?
 TempPointer        DW   TestChar
          .
          .
          .
          .CODE
          .
          .
          .
          mov   [TestChar],'A'
          mov   [TempPointer],0
          .
          .
          .

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

         mov   [bx],1

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

     Турбо Ассемблер дает вам способ гибкого определения  размера
данных  в  виде  операций  WORD PTR и BYTE PTR. Операция WORD PTR
указывает Турбо Ассемблеру, что данный операнд в памяти нужно ин-
терпретировать, как операнд размером в слово, а операция BYTE PTR
указывает Турбо Ассемблеру, что данный операнд в памяти нужно ин-
терпретировать,  как  операнд  размером в байт, независимо от его
предопределенного размера. Например, можно  сделать  так,  что  в
последнем  примере значение 1 размером в слово будет записываться
в слово, на которое указывает регистр BX:

         mov   WORD PTR  [bx],1

или же можно сделать так, что в данном примере значение 1  разме-





ром в байт будет записываться в байт, на который указывает ре- гистр BX: mov BYTE PTR [bx],1 Заметим, что операции WORD PTR и BYTE PTR, если их применять к регистрам, не имеют смысла, так как регистры всегда имеют фик- сированный размер. В таком случае операции BYTE PTR и WORD PTR игнорируются. Аналогично, эти операции игнорируются при примене- нии к константам, поскольку они всегда имеют тот же размер, что и операнд-приемник. Операции WORD PTR и BYTE PTR имеют другое назначение: их можно использовать для временного выбора размера данных для име- нованной переменной в памяти. Почему это может оказаться полезным? Рассмотрим следующий пример: . . . .DATA Source1 DD 12345h Source2 DD 54321h Sum DD ? . . . .CODE . . . mov ax,WORD PTR [Source1] ; получить младшее ; слово Source1 mov dx,WORD PTR [Source1+2] ; получить старшее ; слово Source1 add ax,WORD PTR [Source2] ; прибавить к Source2 ; младшее слово adc dx,WORD PTR [Source2+2] ; прибавить к Source2 ; старшее слово mov WORD PTR [Sum],ax ; сохранить младшее ; слово суммы mov WORD PTR [Sum+2],dx ; сохранить старшее ; слово суммы . . . Все переменные, которые используются в данном примере, представляют собой длинные целые или двойные слова. Однако, про- цессор 8086 не может выполнять сложение двойных слов непосредс- твенно, поэтому такое сложение приходится разбивать на ряд опера- ций со словами. Операция WORD PTR позволяет обращаться к частям переменных Source1, Source2 и Sum, как к словам, хотя сами эти переменные представляют собой двойные слова. Операции FAR PTR и NEAR PTR хотя и не влияют непосредственно на размер данных, они аналогичны операциям WORD PTR и BYTE PTR. Операция FAR PTR приводит к тому, что целевая метка инструкции перехода или вызова будет интерпретироваться, как дальняя метка, и при этом будут загружаться оба регистра CS и IP. С другой сто- роны, операция NEAR PTR вынуждает интерпретировать соответствую- щую метку, как метку ближнего типа, переход на которую осуще- ствляется путем загрузки одного регистра IP. Данные со знаком и без знака ----------------------------------------------------------------- И числа со знаком, и беззнаковые числа состоят из последова- тельности двоичных цифр. Ответственность за различие этих двух видов чисел возлагается на программиста, который пишет программу на Ассемблере (то есть на вас), а не на процессор 8086. Например, значение 0FFFFh может представлять собой либо 65535, либо -1, в зависимости от того, как ваша программа его интерпретирует. Откуда вы знаете, что 0FFFFh - это -1? Прибавьте к нему 1: . . . mov ax,0ffffh add ax,1 . . . и вы обнаружите, что результат будет равен 0. Как раз такой ре- зультат должен получиться при сложении -1 и 1. Одна и та же инструкция ADD будет работать одинаково хорошо, независимо от того, представляют ли собой операнды значения со знаком или беззнаковые значения. Предположим, например, что вы вычли из 0FFFFh значение -1 следующим образом: . . . mov ax,offffh sub ax,1 . . . Результат при этом был бы равен 0FFFEh, что представляет со-


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