Что предпочитаете?

воскресенье, 13 февраля 2011 г.

Внутренние регистры

Так как мы занимаемся программированием микропроцессора, то логичнее всего начать эту тему с обсуждения внутренних регистров микропроцессора, доступных для использования. На рисунке показаны три группы регистров данных, и адресов, 16-битовый указатель команд IP  и 16-битовый регистр флагов.
  • Регистры данных
      В зависимости от того, чем Вы оперируете: 16-битовыми словами или 8-битовыми байтами, регистры данных можно рассматривать как четыре 16-битовых или восемь 8-битовых регистров. В первом случае регистры имеют имена АХ, ВХ, СХ, DX. Эти регистры образованы из 8-битовых регистров AL, АН, BL, ВН, CL, СН, DL и DH. Здесь L и Н означают младшие (low) и старшие (high) байты 16-битовых регистров. Например, регистры AL и АН образуют соответственно младший и старший байты регистра АХ.

  • Регистры сегментов
        В ЭВМ, сконструированных на базе процессоров  8088, программы и данные хранятся в отдельных областях памяти. Эти области (или сегменты) могут иметь объем до 64 Кбайт. Процессор  может иметь дело одновременно с четырьмя сегментами. Начальные адреса этих сегментов содержатся в его четырех регистрах сегментов. Эти регистры выполняют следующие функции:
-регистр сегмента команд CS (code segment) указывает на сегмент, содержащий текущую исполняемую программу.
-регистр сегмента стека SS (stack segment) указывает на текущий сегмент стека. Стек представляет собой область памяти, используемую для временного хранения данных и адресов.
-регистр сегмента данных DS (data segment) указывает на текущий сегмент данных, обычно содержащий используемые в программе переменные.
-регистр дополнительного сегмента ES (extra segment) указывает на текущий дополнительный сегмент, который используется при выполнении операций над строками.
          • Регистры указателей и индексов
              Для вычисления адреса команды в сегменте команд микропроцессор извлекает номер блока памяти из регистра CS, а смещение - из регистра IP. Подобным образом за счет выбора номера блока из соответствующего регистра сегмента, а смещения - из другого регистра осуществляется доступ к данным других сегментов. Для доступа к сегменту данных микропроцессор  извлекает номер блока из регистра DS, а смещение - из регистра ВХ или индексного регистра (SI или DI). Для доступа к сегменту стека микропроцессор извлекает номер блока из регистра SS, а смещение - из регистра указателя (SP или ВР). Выбирая номер блока из регистра ES, микропроцессор может также получить доступ к дополнительному сегменту.

          2 комментария:

          1. Посоветуй читателям книгу "Код" Чарльза Петцольда. После неё любой ассемблер изучать невероятно легко, т.к. это ещё более низкий уровень абстракции - там объясняется сама суть микропроцессоров, их устройство и функционирование.

            ОтветитьУдалить
          2. Мы как раз в институте начали микропроцессоры. Туго идет, надеюсь твой блог мне поможет в понимании некоторых вопросов :)

            ОтветитьУдалить