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




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

                 Перемещение данных в стек и из стека
-----------------------------------------------------------------

     Со стеком (областью памяти в сегменте стека,  работающей  по
дисциплине FIFO  -  "первым-пришел-первым-ушел")  вы уже встреча-
лись. На вершину стека всегда указывает регистр SP. Для обращения
к данным в стеке, с использованием режимов адресации памяти,  при
которых указателем базы является регистр BP,  можно  использовать
инструкцию MOV. Например, инструкция:

            mov   ax,[bp+4]

загружает регистр AX содержимым слова в сегменте стека со  смеще-
нием  BP+4  (доступ  к стеку через регистр BP описывается в Главе
2).

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

           .
           .
           .
           mov   ax,1
           push  ax
           pop   bx
           .
           .
           .

заносят значение (равное 1) в регистре AX в вершину стека,  затем
извлекают 1 из вершины стека и сохраняют ее в BX.



                             Обмен данными
-----------------------------------------------------------------

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

           xchg   ax,dx

выполняет обмен содержимого AX и DX, что эквивалентно  выполнению
инструкций:

           .
           .
           .
           push  ax
           mov   ax,dx
           pop   dx
           .
           .
           .


                              Ввод-вывод
-----------------------------------------------------------------

     До сих пор мы обсуждали перемещение данных между  константа-
ми,  регистрами  и адресным пространством процессора 8086. Как вы
можете вспомнить, в процессоре 8086 имеется также второе, незави-
симое адресное пространство, которое называется пространством ад-
ресов ввода-вывода. В общем случае в качестве каналов  управления
и обмена данными таких устройств, как дисководы, дисплейные адап-
теры, принтеры и клавиатура, могут использоваться  65536  адресов
ввода-вывода или портов.

     Большинство инструкций процессора 8086,  включая  инструкцию
MOV, имеют доступ только к операндам в пространстве адресов памя-
ти. Обращаться к портам ввода-вывода могут только две  инструкции
- IN и OUT.

     Инструкция IN копирует содержимое из указанного  порта  вво-
да-вывода в регистр AL или AX. Адрес порта ввода-вывода, указыва-
емый в качестве источника, можно выбрать одним из двух  способов.
Если адрес порта меньше 256 (100h), вы можете указать его в инст-
рукции, например:

          in   al,41h

     Эта инструкция копирует байт из порта ввода-вывода 41h в ре-
гистр AL.

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

          .
          .
          .
          mov   dx,41h
          in    al,dx
          .





. . Для чего регистр DX используется в качестве указателя порта ввода-вывода? Во-первых, если адрес порта ввода-вывода превышает 255, вы должны использовать DX. Во-вторых, использование регистра DX позволяет при адресации к портам ввода-вывода получить большую гибкость. Например, указатель на порт ввода-вывода можно передать подпрограмме, загрузив его в регистр DX. Пусть вас не введет в заблуждение синтаксис инструкции IN - регистры AL и AX являются единственно возможными операндами-при- емниками. Аналогично, единственными допустимыми операндами-источ- никами являются регистр DX и значение-константа, меньшая 255. Поэтому, как бы вам этого ни хотелось, использовать инструкции типа: in bh,si недопустимо. Инструкция OUT в точности эквивалентна инструкции IN, только операндом-источником является регистр AL или AX, а порт ввода-вы- вода, на который указывает регистр DX или постоянное значение, меньшее 256, является операндом-приемником. Например, следующие инструкции устанавливают порт ввода-вывода 3B4h в значение 0Fh: . . . mov dx,3b4h mov al,0fh out dx,al . . . Операции ----------------------------------------------------------------- Перемещение данных - это, конечно, важная функция, поскольку компьютер тратит существенную часть своего времени на перемещение данных из одного места в другое. Однако в равной степени важно иметь возможность манипулировать данными, выполняя над ними ариф- метические и логические операции. Поэтому далее мы рассмотрим арифметические и логические операции, поддерживаемые процессором 8086. Арифметические операции ----------------------------------------------------------------- Даже если ваш компьютер РС и не тратит все время на работу с числами и вычислительные операции, вы знаете, что он может это сделать, если вам это потребуется. Кроме того, на компьютере РС может работать множество электронных таблиц, программ баз данных и инженерных пакетов. Если принять все это во внимание, то стано- вится достаточно очевидным, что компьютер IBM PС должен обладать мощными вычислительными способностями. И это в самом деле так. Однако, хотя работающее на процессо- ре 8086 программное обеспечение может прекрасно выполнять матема- тические действия, сам процессор 8086 обеспечивает на удивление простые арифметические возможности. В процессоре 8086 отсутствуют инструкции для выполнения арифметических операций с плавающей точкой (арифметических действий с такими числами, как 5.2 и 1.03Е17), не говоря уже о тригонометрических функциях. Эти опера- ции выполняются арифметическим сопроцессором 8087. Это не означа- ет, что программы, работающие на процессоре 8086, не могут выпол- нять арифметические операции над числами с плавающей точкой. Ведь электронные таблицы могут работать и на компьютерах РС без сопро- цессора 8087. Однако программы процессора 8086 выполняют арифме- тические операции над числами с плавающей точкой медленнее, с по- мощью последовательности инструкций сдвигов, сложений и проверок, а не с помощью одной быстро выполняющейся инструкции, как в соп- роцессоре 8087. Кроме того, в процессоре 8086 не предусмотрено арифметичес- ких и логических инструкций, которые могут непосредственно рабо- тать с операндами, размер которых превышает 16 бит. В чем же тогда заключается встроенная поддержка арифметичес- ких операций процессора 8086? Процессор 8086 может выполнять 8- и 16-битовое сложение, вычитание, умножение и деление чисел со зна- ком и без знака и имеет специальные быстрые инструкции для увели- чения и уменьшения операндов. В процессоре 8086 предусмотрена также поддержка операций сложения и вычитания значений, превышаю- щих 16 бит, хотя для операций с такими значениями требуется нес- колько инструкций. Сложение и вычитание ----------------------------------------------------------------- Во многих примерах программ мы уже встречались с инструкция- ми ADD (сложение) и SUB (вычитание). Их действие соответствует названию. Инструкция ADD выполняет сложение операнда-источника (правого операнда) с содержимым операнда-приемника и записывает результат в операнд-приемник. Инструкция SUB делает тоже самое, только она вычитает операнд-источник из операнда-приемника. Например, инструкции:


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