Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Питер Абель Весь текст 992.61 Kb

Ассемблер и программирование для IBM PC

Предыдущая страница Следующая страница
1 ... 74 75 76 77 78 79 80  81 82 83 84 85
сегментный регистр, слово в памяти. См. также команду PUSH.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д (три формата):

          Регистр:            |01011reg|
          Сегментный регистр: |000sg111| (sg-сегм.рег.)
          Регистр/память:     |10001111|mod000r/m|


    POPA: Извлечение из стека всех общих регистров (80188,80186,80286)
   --------------------------------------------------------------------
     О п е р а ц и я: Извлекает из стека восемь значений в регистры Dl, SI
BP, SP,  BX, DX, CX,  AX  в  указанной  последовательности  и  увеличивает
регистр  SP  на  16.  Регистры  обычно  записываются    в    стек    ранее
соответствующей командой PUSHA.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д: 01100001 (без операндов).


                    POPF: Извлечение флагов из стека
                   ----------------------------------
     О п е р а ц и я: Передает биты (помещенные ранее в стек) во  флаговый
регистр.  См. также команды PUSHF и POP. Регистр SP указывает  на  текущее
слово в вершине стека.  Команда POPF  передает  биты  из  этого  слова  во
флаговый регистр и увеличивает значение в регистре SP на 2. Обычно команда
PUSHF записывает значения флагов в стек, а  команда  POPF  восстанавливает
эти флаги.

     Ф л а г и: Команда воздействует на все флаги.

     О б ъ е к т н ы й  к о д: 10011101 (без операндов).


                       PUSH: Занесение слова в стек
                      ------------------------------
     О п е р а ц и я: Сохраняет значение слова (адрес или элемент  данных)
в стеке для последующего использования.  Регистр SP указывает  на  текущее
слово в вершине стека.  Команда PUSH уменьшает значение в регистре SP на 2
и передает слово из указанного операнда в новую вершину стека.  Существует
три типа команды PUSH в зависимости от операнда: общий регистр, сегментный
регистр или слово в памяти. См. также команды POP и PUSHF.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д (три формата):

          Регистр:             |01010reg|
          Сегментный  регистр: |000sg111| (sg-сегм.рег.)
          Регистр/память:      |11111111|mod110r/m|


     PUSHA: Занесение в стек всех общих регистров (80188,80186,80286)
    ------------------------------------------------------------------
     О п е р а ц и я: Записывает в стек восемь значений регистров AX,  CX,
DX, BX, SP, BP, SI, DI в указанной последовательности и уменьшает  регистр
SP на 16. Обычно команда POPA позже восстановит эти регистры из стека.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д: 01100000 (без операндов).


                      PUSHF: Занесение флагов в стек
                     --------------------------------
     О п е р а ц и я: Сохраняет значения флагов из  флагового  регистра  в
стеке для последующего использования.  Регистр  SP  указывает  на  текущее
слово в вершине стека. Команда PUSHF уменьшает значение в регистре SP на 2
и передает флаги в новую вершину стека. См. также команды POPF и PUSH.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д: 10011100 (без операндов).


            RCL и RCR: Циклический сдвиг влево через перенос и
                  циклический сдвиг вправо через перенос
           ----------------------------------------------------
     О п е р а ц и я: Выполняет циклический сдвиг  битов  (ротацию)  влево
или вправо через флаг CF.  Данные операции могут выполняться в байте или в
слове, в регистре или в памяти.  Ротация на один бит кодируется в  команде
значением 1; ротация более чем на один бит требует указания  регистра  CL,
который содержит счетчик. Для команды RCL значение флага CF записывается в
бит 0, а. самый левый  бит  записывается  во  флаг  CF;  все  другие  биты
сдвигаются влево.  Для команды RCR значение флага CF записывается в  самый
левый бит, а бит 0 записывается во флаг CF;  все  другие  биты  сдвигаются
вправо. См. также команды ROL и ROR.

     Ф л а г и: Команда воздействует на флаги CF и OF.

     О б ъ е к т н ы й  к о д:  RCL: |110100cw|mod010r/m|
                                RCR: |110100cw|mod011r/m|
                                        (если с = 0, то сдвиг на 1;
                                        если с = 1, то сдвиг на CL).


           REP/REPE/REPZ/REPNE/REPNZ: Повтор строковой операции
          ------------------------------------------------------
     О п е р а ц и я: Повторяет строковую операцию определенное число раз.
Используется в качестве префикса  повторения  перед  строковыми  командами
CMPS, MOVS, SCAS, STOS.  Счетчик повторений должен быть загружен в регистр
CX до выполнения строковой команды. Операция уменьшает регистр CX на 1 при
каждом  выполнении  строковой  команды.  Для   префикса    REP    операция
повторяется, пока содержимое регистра CX не достигнет нуля.  Для  префикса
REPE/REPZ  операция  повторяется,  пока  регистр  CX  содержит   ненулевое
значение и флаг ZF равен 1 (нулевое состояние).  Для префикса  REPNE/REPNZ
операция повторяется, пока регистр CX содержит ненулевое значение  и  флаг
ZF равен 0 (ненулевое состояние).

     Ф л а г и: Определяются соответствующей строковой командой.

     О б ъ е к т н ы й  к о д:  REP/REPNE:  11110010
                                REPE:       11110011


                        RET: Возврат из процедуры
                       ---------------------------
     О п е р а ц и я: Возвращает управление из процедуры, вызванной  ранее
командой CALL.  Команда CALL может  передавать  управление  внутри  одного
сегмента или между сегментами.  Команда RET заносит слово из вершины стека
в регистр IP и увеличивает значение SP на 2. Для  межсегментного  возврата
команда RET, кроме того, заносит слово из новой вершины стека в регистр CS
и еще раз увеличивает значение SP на 2.  Любой  числовой  операнд  команды
(например, RET 4) прибавляется к указателю стека SP.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д (четыре формата):

          Внутри сегмента:              |11000011|
          Внутри сегмента с операндом:  |11000010|data-low|data-high|
          Между сегментами:             |11001011|
          Между сегментами с операндом: |11001010|data-low|data-high|


      ROL и ROR: Циклический сдвиг влево и циклический сдвиг вправо
     ---------------------------------------------------------------
     О п е р а ц и я: Выполняет циклический сдвиг  битов  (ротацию)  влево
или вправо.  Данные операции могут выполняться в  байте  или  в  слове,  в
регистре или в памяти.  Ротация на один бит кодируется в команде значением
1; ротация более чем на один бит требует  указания  регистра  CL,  который
содержит счётчик.  Для команды ROL самый левый бит записывается в  бит  0;
все другие биты сдвигаются влево.  Для команды ROR бит  0  записывается  в
самый левый бит; все другие биты сдвигаются вправо.  См. также команды RCL
и RCR.

     Ф л а г и: Команда воздействует на флаги CF и OF.

     О б ъ е к т н ы й  к о д:  ROL: |110100cw|mod000r/m|
                                ROR: |110100cw|mod001r/m|
                                        (если с = 0, то сдвиг на 1;
                                         если с = 1, то сдвиг на CL).


                  SAHF: Установка флагов из регистра АН
                 ---------------------------------------
     О п е р а ц и я:   Данная  команда   обеспечивает   совместимость   с
процессором 8080 для пересылки значений флагов из регистра АН во  флаговый
регистр. См. также команду LAHF. Команда SAHF пересылает определенные биты
из регистра АН во флаговый регистр в следующем виде:

               SZ * A * P * C      (* обозначает неиспользуемые биты)

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д: 10011110 (без операндов)


               SAL, SAR, SHL и SHR: Сдвиг влево или вправо
              ---------------------------------------------
     О п е р а ц и я: Выполняет  сдвиг  битов  влево  или  вправо.  Данные
операции могут выполняться в байте или в слове, в регистре или  в  памяти.
Сдвиг на один бит кодируется в команде значением 1;  сдвиг  более  чем  на
один бит требует указания регистра CL, который  содержит  счетчик  сдвига.
Команда  SAR  выполняет  арифметический  сдвиг,  который  учитывает   знак
сдвигаемого значения.  Команды SHL и  SHR  выполняют  логический  сдвиг  и
рассматривают знаковый бит как обычный бит данных. Команда SAL выполняется
аналогично команде SHL. Команды SAL и SHL сдвигают биты влево определенное
число раз  и  правый  освобождающийся  бит  заполняют  нулевым  значением.
Команда  SHR  сдвигает  биты  вправо  определенное  число  раз  и    левый
освобождающийся бит заполняет нулевым значением. Команда SAR сдвигает биты
вправо определенное  число  раз  и  левый  освобождающийся  бит  заполняет
значением знакового бита (0  или  1).  Во  всех  случаях  значения  битов,
выдвигаемых за разрядную сетку, теряются.

     Ф л а г и: Команда воздействует на флаги CF, OF, PF, SF и ZF (флаг AF
не определен).

     О б ъ е к т н ы й  к о д:  SAL/SHL: |110100cw|mod100r/m|
                                SAR:     |110100cw|mod111r/m|
                                SHR:     |110100cw|mod101r/m|
                                             (если с = 0, то сдвиг на 1;
                                              если с=1, то сдвиг на CL);


                         SBB: Вычитание с заемом
                        -------------------------
     О п е р а ц и я:   Обычно  используется  при  вычитании  многословных
двоичных величин для учета единичного бита переполнения в последующей фазе
операции.  Если флаг CF установлен в 1, то команда SBB сначала вычитает  1
из операнда 1. Команда SBB  всегда  вычитает  операнд  2  из  операнда  1,
аналогично команде SUB. См. также команду ADC.

     Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF. SF и ZF.

     О б ъ е к т н ы й  к о д (три формата):

          Регистр из регистра или памяти: |000110dw|modregr/m|
          Непосредственное значение из регистра AX (AL):
               |0001110w|--data--|data, если w=1|
          Непосредственное значение из регистра или памяти:
               |100000sw|mod011r/m|--data--|data, если sw=01|


             SCAS/SCASB/SCASW: Поиск байта или слова в строке
            --------------------------------------------------
     О п е р а ц и я: Выполняет поиск  определенного  байта  или  слова  в
строке. Для команды SCASB необходимое значение загружается в регистр AL, а
для команды SCASW - в регистр AX.  Регистровая  пара  ES:DI  указывает  на
строку в памяти, которая должна быть сканирована.  Данные  команды  обычно
используются с префиксом REPE или REPNE.  Если  флаг  DF  равен  нулю,  то
операция сканирует память слева направо и  увеличивает  регистр  DI.  Если
флаг DF равен единице,  то  операция  сканирует  память  справа  налево  и
уменьшает регистр DI.

     Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.

     О б ъ е к т н ы й  к о д: 1010111w (без операндов).


                      STC: Установка флага переноса
                     -------------------------------
     О п е р а ц и я: Устанавливает значение  флага  CF  в  1.  См.  также
команду STD.

     Ф л а г и: Команда воздействует на флаг CF (устанавливается в 1).

     О б ъ е к т н ы й  к о д: 11111001 (без операндов).


                     STD: Установка флага направления
                    ----------------------------------
     О п е р а ц и я: Устанавливает значение  флага  направления  в  1.  В
результате строковые операции, такие,  как  MOVS  или  CMPS,  обрабатывают
данные справа налево. См. также CLD.

     Ф л а г и: Команда воздействует на флаг DF (устанавливается в 1).

     О б ъ е к т н ы й  к о д: 11111101 (без операндов).


                     STI: Установка флага прерывания
Предыдущая страница Следующая страница
1 ... 74 75 76 77 78 79 80  81 82 83 84 85
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (15)

Реклама