ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



2. Инструкции пересылки данных
               14  инструкций  этого  типа   обеспечивают   пересылку
         одиночных  байтов и слов между памятью и регистрами, а также
         между портами ввода/вывода и регистрами AL  или  AX.  В  эту
         группу  включены  также  инструкции  манипуляции со стеком и
         инструкции пересылки флагов процессора и загрузки  регистров
         сегмента.
               Все   инструкции   пересылки   данных   можно  условно
         разделить на 4 группы:
               1. Общего назначения:
                    MOV   - пересылка байта или слова
                    PUSH  - сохранение слова в стеке
                    POP   - восстановление слова из стека
                    XCLHG - обмен байтами или словами
                    XLAT  - трансляция байта
               2. Ввода/вывода:
                    IN    - ввод байта или слова из порта
                    OUT   - вывод байта или слова в порт
               3. Адресные операции:
                    LEA   - загрузка исполнительного адреса
                    LDS   - загрузка указателя с использованием DS
                    LES   - загрузка указателя с использованием ES
               4. Пересылка флагов:
                    LAHF  - загрузка флагов в AH
                    SAHF  - установка флагов из AH
                    PUSHF - сохранение флагов в стеке
                    POPF  - восстановление флагов из стека
               
               Все инструкции пересылки данных, кроме  POPF  и  SAHF,
         значений флагов процессора не изменяют.
               Подробнее эти инструкции описаны в разделах 2.1-2.4.
               
               
               
               
               
                      2.1. Инструкции общего назначения.
               
               
               
         MOV приемник,источник         ПЕРЕСЫЛКА БАЙТА ИЛИ СЛОВА
         ---------------------
               Байт или слово пересылается из источника в приемник.
               
               
               

                                     -  8 -
         
         
         PUSH источник                 СОХРАНЕНИЕ СЛОВА В СТЕКЕ
         -------------
               Указатель стека (регистр SP) уменьшается  на  2,  и  в
         вершину  стека  помещается  слово  из  источника. Часто PUSH
         используется для занесения в стек параметров процедуры перед
         ее  вызовом.  В  общем  случае  это  основное  средство  для
         сохранения временных данных.
               
               
               
         POP приемник                  ВОССТАНОВЛЕНИЕ СЛОВА ИЗ СТЕКА
         ------------
               Слово данных  из  текущей  вершины  стека,  адресуемой
         регистром  SP,  пересылается в операнд приемник.  Регистр SP
         затем увеличивается на 2 и указывает на новую вершину стека.
         POP   может   использоваться  для  восстановления  из  стека
         временных данных.
               
               
               
         XCLHG приемник,источник       ОБМЕН БАЙТАМИ ИЛИ СЛОВАМИ
         -----------------------
               Эта инструкция осуществляет обмен содержимым (байт или
         слово)   между   операндами   источник   и   приемник.   При
         использовании в  сочетании  с  префиксом  LOCK  XCLHG  может
         проверять  и  устанавливать  семафор, управляющий доступом к
         разделяемому несколькими процессорами ресурсу.
               
               
               
         XLAT таблица-трансляции       ТРАНСЛЯЦИЯ БАЙТА
         -----------------------
               Байт в регистре  AL  замещается  байтом  из  созданной
         пользователем      256-байтной      таблицы      трансляции.
         Предполагается, что регистр BX содержит  адрес  начала  этой
         таблицы.  Содержимое  AL используется как индекс в таблице и
         замещается  байтом,  выбираемом  из  таблицы  со  смещением,
         соответствующим  двоичному  содержимому  регистра AL (первый
         байт  таблицы  имеет  смещение  0).  Инструкция  XLAT  может
         использоваться для трансляции  символов  из  одного  кода  в
         другой.
               
               
               
               
               
                    
                             2.2. Ввод/вывод.
               
               
               
         IN аккумулятор,порт           ВВОД БАЙТА ИЛИ СЛОВА ИЗ ПОРТА
         -------------------
               Байт   или  слово,  полученные  из  указанного  порта,
         помещается в регистр AL или AX соответственно.  Номер  порта

                                     -  9 -
         
         
         может задаваться либо непосредственно числом в пределах от 0
         до 255, обеспечивающим доступ только  к  этим  портам,  либо
         указанием  регистра  DX,  который предварительно должен быть
         загружен требуемым  значением,  что  обеспечивает  доступ  к
         портам с номерами от 0 до 65535.
               
               
               
               
         OUT порт,аккумулятор          ВЫВОД БАЙТА ИЛИ СЛОВА В ПОРТ
         --------------------
               Байт или слово, предварительно помещенные в регистр AL
         или AX соответственно, выводится  в  указанный  порт.  Номер
         порта   может   задаваться  либо  непосредственно  числом  в
         пределах от 0 до 255, обеспечивающим  доступ  только  к этим
         портам,  либо  указанием регистра DX, который предварительно
         должен быть загружен требуемым значением,  что  обеспечивает
         доступ к портам с номерами от 0 до 65535.
               
               
               
               
               
               
               
                           2.3. Адресные операции.
               
               
               Адресные   операции   работают  не  с  содержимым  или
         значением переменных, а с их адресами. Они наиболее  полезны
         при обработке списков, базированных переменных и в операциях
         со строками.
               
               
               
         LEA приемник,источник        ЗАГРУЗКА ИСПОЛНИТЕЛЬНОГО АДРЕСА
         ---------------------
               Смещение  операнда  источник  помещается   в   операнд
         приемник.  Источник должен быть операндом памяти, а приемник
         -  16-битовым регистром. Эта инструкция может использоваться
         для  установки   регистров  перед  XLAT  или  операциями  со
         строками,  которые  предполагают,  что  некоторые   регистры
         загружены адресными значениями.
               
               
               
         LDS приемник,источник         ЗАГРУЗКА УКАЗАТЕЛЯ С DS
         ---------------------
               Указатель  представляет  собой   32-битовую   адресную
         переменную, первое слово которой содержит смещение, а второе
         - базовый адрес (сегмент). Адрес указателя в этой инструкции
         задается  операндом  источник, который должен быть операндом
         памяти. Слово смещения из  указателя  помещается  в  операнд
         приемник,  в  качестве которого может быть указан 16-битовый
         регистр. Слово сегмента из указателя  помещается  в  регистр

                                     - 10 -
         
         

         DS.  Указание  SI  в  качестве  приемника  является  обычным
         способом подготовки для строковой операции строки-источника,
         расположенной вне текущего сегмента данных. 
               
               
               
               
         LES приемник,источник         ЗАГРУЗКА УКАЗАТЕЛЯ С ES
         ---------------------
               Указатель  представляет  собой   32-битовую   адресную
         переменную, первое слово которой содержит смещение, а второе
         - базовый адрес (сегмент). Адрес указателя в этой инструкции
         задается  операндом  источник, который должен быть операндом
         памяти. Слово смещения из  указателя  помещается  в  операнд
         приемник,  в  качестве которого может быть указан 16-битовый
         регистр. Слово сегмента из указателя  помещается  в  регистр
         ES.  Указание  DI  в  качестве  приемника  является  обычным
         способом подготовки для строковой операции строки-приемника,
         расположенной вне текущего экстра сегмента.
               
               
               
               
               
               
               
                          2.4. Операции с флагами.
               
               
               
         LAHF                          ЗАГРУЗКА ФЛАГОВ В AH
         ----
               Флаги SF, ZF, AF, PF и CF, являющиеся аналогами флагов
         процессоров 8080/8085, копируются в биты 7,  6,  4,  2  и  0
         соответственно регистра AH. Биты 5, 3 и 1 неопределены. Сами
         флаги не изменяются. Эта инструкция обеспечивает возможность
         выполнения   на  8086  или  8088  программ,  написанных  для
         процессоров 8080/8085.
               
               
               
         SAHF                          УСТАНОВКА ФЛАГОВ ИЗ AH
         ----
               Биты 7, 6, 4, 2 и  0  регистра  AH  замещают  значения
         флагов  SF,  ZF, AF, PF и CF соответственно. Значения флагов
         OF, DF, IF и TF не изменяются. Эта  инструкция  введена  для
         совместимости с процессорами 8080/8085.
               
               
               
         PUSHF                         СОХРАНЕНИЕ ФЛАГОВ В СТЕКЕ
         -----
               По  этой  инструкции указатель стека SP уменьшается на
         2,  и  в  вершину  стека  помещаются  все  флаги  процессора
         8086/8088   в  формате  слова  согласно  их  расположению  в

                                     - 11 -
         
         
         регистре флагов. Сами флаги не изменяются.
               
               
               
         POPF                          ВОССТАНОВЛЕНИЕ ФЛАГОВ ИЗ СТЕКА
         ----
               Из вершины стека, адресуемой регистром SP,  в  регистр
         флагов процессора  8086/8088  помещаются  специфичные  биты,
         соответствующие расположению флагов в регистре флагов. После
         этого SP увеличивается на 2 и  указывает  на  новую  вершину
         стека.   Комбинации   инструкций   PUSHF  и  POPF  позволяют
         процедуре сохранять и  восстанавливать  флаги  вызвавшей  ее
         программы.  Кроме  того,  таким  образом можно устанавливать
         значение флага TF (ловушка), т.к. специальной инструкции для
         этого  нет.  Для  этого следует  сохранить  флаги  в  стеке,
         изменить  значение  бита  8  и  затем  восстановить флаги из
         стека.


© KOAP Open Portal 2000