Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

СПРАВОЧНИК по системе программирования ТУРБО АССЕМБЛЕР 2.0


Оглавление

                               Регистры
-----------------------------------------------------------------

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

     Регистры разбиваются на четыре категории:  регистры  флагов,
регистры общего назначения, указатель инструкций и сегментные ре-
гистры (см. Рис. 4.4).

                             Регистр флагов
         15                                                     0
         --------------------------------------------------------
   FLAGS |                                                      |
         --------------------------------------------------------

                       Регистры общего назначения

         --------------------------------------------------------
   AX    |          AH             |            AL              |
         --------------------------------------------------------
         --------------------------------------------------------
   BX    |          BH             |            BL              |
         --------------------------------------------------------
         --------------------------------------------------------
   CX    |          CH             |            CL              |
         --------------------------------------------------------
         --------------------------------------------------------
   DX    |          DH             |            DL              |
         --------------------------------------------------------
         --------------------------------------------------------
   SI    |                                                      |
         --------------------------------------------------------
         --------------------------------------------------------
   DI    |                                                      |
         --------------------------------------------------------
         --------------------------------------------------------
   BP    |                                                      |
         --------------------------------------------------------
         --------------------------------------------------------
   SP    |                                                      |
         --------------------------------------------------------
                         Указатель инструкций

         --------------------------------------------------------
   IP    |                                                      |
         --------------------------------------------------------

                         Сегментные регистры

         --------------------------------------------------------
   CS    |                                                      |
         --------------------------------------------------------
         --------------------------------------------------------
   DS    |                                                      |
         --------------------------------------------------------
         --------------------------------------------------------
   ES    |                                                      |
         --------------------------------------------------------
         --------------------------------------------------------
   SS    |                                                      |
         --------------------------------------------------------

     Рис. 4.4 Регистры процессора 8086.


                            Регистр флагов
-----------------------------------------------------------------

     Этот 16-разрядный (16-битовый) регистр содержит всю  необхо-
димую  информацию  о состоянии процессора 8086 и результатах пос-
ледних инструкций (см. Рис. 4.5).

 15                                                         0
 ------------------------------------------------------------
 |   |   |   |   | O | D | T | S | Z |   | A | P | P |  | C |
 ------------------------------------------------------------

     Битовые флаги:

     O - флаг переполнения;
     D - флаг направления;
     I - флаг прерывания;
     T - флаг перехвата;
     S - флаг знака;
     Z - флаг нуля;
     A - флаг дополнительного переноса;
     P - флаг четности;
     C - флаг переноса.

     Рис. 4.5 Регистр флагов процессора 8086.

     Например, если вы хотите знать, получен ли при вычитании ну-
левой результат, непосредственно после этой инструкции вам следу-
ет проверить флаг нуля (бит Z в регистре флагов). Если  он  уста-
новлен (то есть имеет ненулевое значение),  это будет говорить  о
том,  что результат нулевой. Другие флаги, такие, как флаги пере-
носа и переполнения аналогичным образом  сообщают  о  результатах
арифметических и логических операций.

     Другие флаги управляют  режимом  операций  процессора  8086.
Флаг  направления  управляет  направлением,  в  котором строковые
инструкции выполняют перемещение,  а  флаг  прерывания  управляет
тем, будет ли разрешено внешним аппаратным средствам, таким, нап-
ример, как клавиатура или модем, временно приостанавливать  теку-
щий код для выполнения функций, требующих немедленного обслужива-
ния. Флаг перехвата используется только программным обеспечением,
которое  служит для отладки другого программного обеспечения (от-
ладчики).

     Регистр флагов не считывается  и  не  модифицируется  непос-
редственно.  Вместо этого регистр флагов управляется в общем слу-
чае с помощью специальных инструкций (таких, как CLD, STI и CMC),
а также с помощью арифметических и логических инструкций, модифи-
цирующих отдельные флаги. И наоборот, содержимое отдельных разря-
дов регистра флагов влияет на  выполнение  инструкций  (например,
JZ,  RCR и MOVSB).  Регистр флагов не используется на самом деле,
как ячейка памяти, вместо этого он служит для контроля за состоя-
нием и управления процессором 8086.

     Иначе говоря, другие регистры и память  содержат  данные,  а
регистр  флагов  содержит информацию о соотношении между данными,
результатах операций и состоянии процессора 8086 в целом.


                      Регистры общего назначения
-----------------------------------------------------------------

     Восемь регистров  общего  назначения  (или  общих регистров)
процессора 8086 (каждый размером 16 бит) используются в операциях
большинства инструкций в качестве источника или приемника при пе-
ремещении данных и вычислениях,  указателей на  ячейки  памяти  и
счетчиков.  Каждый регистр общего назначения может использоваться
для хранения 16-битового значения,  в арифметических и логических
операциях, может выполняться обмен между регистром и памятью (за-
пись из регистра в память и наоборот).  Например,  в данном фраг-
мента программы:

                .
                .
                .
                mov   ax,5
                mov   dx,9
                add   ax,dx
                .
                .
                .

значение 5 загружается в регистр AX, значение 9 - в DX, и эти два
значения складываются вместе. При этом результат (14) сохраняется
в регистре AX. Вместо регистров AX и DX здесь можно  использовать
регистр CX, SI или любой другой регистр общего назначения.

     Кроме такого общего свойства регистров, как использования их
для  хранения  значений  или в качестве источника и приемника при
работе в инструкциях с данными, каждый регистр общего  назначения
имеет  свою  особенность.  Поэтому рассмотрим далее каждый из них
отдельно.


                              Регистр AX
-----------------------------------------------------------------

     Регистр AX называют также накопителем (аккумулятором).  Этот
регистр  всегда  используется в операциях умножения или деления и
является также одним из тех регистров, который можно использовать
для наиболее эффективных операций (арифметических, логических или
операций перемещения данных).

     Младшие 8  бит регистра AX называются также регистром AL,  а
старшие 8 бит - регистром AH. Это может оказаться удобным при ра-
боте с данными размером в байт.  Таким образом,  регистр AX можно
использовать,  как два отдельных регистра.  В следующем фрагменте
программы  регистр AH устанавливается в значение 0,  это значение
копируется в AL и затем в регистр AL добавляется 1.

                .
                .
                .
                mov   ah,0
                mov   al,ah
                inc   al
                .
                .
                .

     В результате в регистре  AX будет записано значение  1.  Ре-
гистры  BX, CX и DX могут аналогичным образом использоваться либо
как один 16-разрядный регистр, либо как два 8-разрядных.


                              Регистр BX
-----------------------------------------------------------------

     Регистр BX может использоваться для ссылки на ячейку  памяти
(указатель). Более подробно мы рассмотрим это в Главе 5 "Основные
элементы программы  на  Ассемблере".  Если  говорить  кратко,  то
16-битовое значение, записанное в BX, может использоваться  в ка-
честве части адреса ячейки памяти, к которой производится доступ.
Например,  следующий  код загружает в AL содержимое адреса памяти
9:

                .
                .
                .
                mov   ax,0
                mov   ds,ax
                mov   bx,9
                mov   al,[bx]
                .
                .
                .

     Как можно заметить, перед обращением к ячейке памяти, на ко-
торую указывает BX,  мы загрузили в DS значение 0 (через  регистр
AX). Это результат сегментной организации памяти процессора 8086,
о которой мы уже ранее упоминали. (К этой теме мы вернемся в раз-
деле "Сегментные регистры".) По умолчанию,  когда BX используется
в качестве указателя на ячейку памяти,  он ссылается на нее отно-
сительно сегментного регистра DS.

     Как и регистры AX, CX и DX, регистр BX  может  интерпретиро-
ваться, как два восьмибитовых (8-разрядных) регистра - BH и BL.



Оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
54K
05 ноября 2009 года
well*
0 / / 05.11.2009
+1 / -0
Мне нравитсяМне не нравится
29 ноября 2009, 23:21:50
Хм... Так где именно ошибка с битовыми флагами?
I - флаг прерывания; - на картинке не присутствует, зато есть в двойном экземпляре P - флаг четности;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог