Методическое пособие по решению задач лабораторного практикума по курсу "ЭВУ и системы" (изучение архитектуры и системы команд INTEL-совместимых микропроцессоров). Коршунов А.Д. - 13 стр.

UptoLike

Составители: 

13
Итак, при работе на Ассемблере можно организовать циклы тремя способами:
1. с помощью условных переходов;
2. с помощью команд LOOP;
3. с помощью префиксов REP для строковых команд.
3. Замечания о методах адресации
Методы адресации данных были подробно рассмотрены в Методических указаниях
«Изучение архитектуры и системы команд Intel-совместимых процессоров». Здесь, для
удобства работы, будут напомнены лишь основные моменты.
Данные, подлежащие обработке в той или иной конкретной команде, как известно,
принято называть операндами. Операнды могут располагаться в различных местах, в
частности, в одном из РОН, в сегменте данных оперативной памяти, в стеке и т.д., и
обращение к ним может быть произведено весьма разнообразными способами. Это
разнообразие и составляет суть методов адресации.
Система команд и методы адресациидва тесно взаимосвязанных между собой
понятия. С одной стороны, ни одной конкретной команды нельзя сформировать без
использования того или иного метода адресации; с другой стороны, эти методы "не
работают" вне конкретных команд.
Перечислим название ОСНОВНЫХ методов адресации и дадим их краткую
характеристику.
Регистровая адресация. Операнд или операнды располагаются в одном из РОН, в
индексном регистре либо (если речь идет о сегментной части адреса) в сегментном
регистре. Это обеспечивает очень быстрый доступ к данным; соответствующие команды,
как правило, имеют короткий двоичный код. Однако количество РОН в процессоре
невелико; их может не хватить для размещения всех переменных при решении сложной
задачи.
Непосредственная адресация. Операнд(ы) располагаются в самой команде, в ее
последних байтах. Эти байты, как правило, находятся во внутренней очереди команд
процессора, поэтому доступ к ним осуществляется также достаточно быстро.
Прямая адресация. В составе команды находится не сам операнд, а его адрес. Это
простейший способ обратиться к данным, находящимся в ОЗУ.
Косвенно-регистровая адресация. В этом случае адрес операнда размещается в
одном из регистров. Как правило, для этого используются регистры SI, DI, BX, BP.
Содержимое регистра можно изменять (например, в цикле), при этом одна и та же
команда будет оперировать различными ячейками памяти.
Неявная (или подразумеваемая) адресация используется, например, при
обращении к отдельным флагам или регистру флагов в целом, а также в командах
обработки строк (цепочек данных) типа MOVS, SCAS, в командах MUL, DIV и т.п.
Стековая адресация является разновидностью неявной. Операнд находится в
стеке, на вершину которого указывает регистр SP.
ВНИМАНИЕ! Следует особо отметить, что термин "смещение" при работе с
микропроцессорной системой может пониматься в двух разных смыслах. Во-первых,
это смещение в составе логического адреса памяти, то есть фактически расстояние от
начала сегмента до конкретного (адресуемого) байта; во-вторых, это смещение в
соответствующих методах адресации, то есть величина, прибавляемая к содержимому
регистра, рассматриваемого как «базовый» (обычно BX или BP). В первом случае
                                                                                     13

    Итак, при работе на Ассемблере можно организовать циклы тремя способами:
         1. с помощью условных переходов;
         2. с помощью команд LOOP;
         3. с помощью префиксов REP для строковых команд.



                    3. Замечания о методах адресации
      Методы адресации данных были подробно рассмотрены в Методических указаниях
«Изучение архитектуры и системы команд Intel-совместимых процессоров». Здесь, для
удобства работы, будут напомнены лишь основные моменты.
      Данные, подлежащие обработке в той или иной конкретной команде, как известно,
принято называть операндами. Операнды могут располагаться в различных местах, в
частности, в одном из РОН, в сегменте данных оперативной памяти, в стеке и т.д., и
обращение к ним может быть произведено весьма разнообразными способами. Это
разнообразие и составляет суть методов адресации.
      Система команд и методы адресации – два тесно взаимосвязанных между собой
понятия. С одной стороны, ни одной конкретной команды нельзя сформировать без
использования того или иного метода адресации; с другой стороны, эти методы "не
работают" вне конкретных команд.
      Перечислим название ОСНОВНЫХ методов адресации и дадим их краткую
характеристику.

       Регистровая адресация. Операнд или операнды располагаются в одном из РОН, в
индексном регистре либо (если речь идет о сегментной части адреса) в сегментном
регистре. Это обеспечивает очень быстрый доступ к данным; соответствующие команды,
как правило, имеют короткий двоичный код. Однако количество РОН в процессоре
невелико; их может не хватить для размещения всех переменных при решении сложной
задачи.
       Непосредственная адресация. Операнд(ы) располагаются в самой команде, в ее
последних байтах. Эти байты, как правило, находятся во внутренней очереди команд
процессора, поэтому доступ к ним осуществляется также достаточно быстро.
       Прямая адресация. В составе команды находится не сам операнд, а его адрес. Это
простейший способ обратиться к данным, находящимся в ОЗУ.
       Косвенно-регистровая адресация. В этом случае адрес операнда размещается в
одном из регистров. Как правило, для этого используются регистры SI, DI, BX, BP.
Содержимое регистра можно изменять (например, в цикле), при этом одна и та же
команда будет оперировать различными ячейками памяти.
       Неявная (или подразумеваемая) адресация используется, например, при
обращении к отдельным флагам или регистру флагов в целом, а также в командах
обработки строк (цепочек данных) типа MOVS, SCAS, в командах MUL, DIV и т.п.
       Стековая адресация является разновидностью неявной. Операнд находится в
стеке, на вершину которого указывает регистр SP.

       ВНИМАНИЕ! Следует особо отметить, что термин "смещение" при работе с
микропроцессорной системой может пониматься в двух разных смыслах. Во-первых,
это смещение в составе логического адреса памяти, то есть фактически расстояние от
начала сегмента до конкретного (адресуемого) байта; во-вторых, это смещение в
соответствующих методах адресации, то есть величина, прибавляемая к содержимому
регистра, рассматриваемого как «базовый» (обычно BX или BP). В первом случае