
Микропроцессоры Токхайм / 6.10. СПОСОБЫ АДРЕСАЦИИ
.doc6.10. СПОСОБЫ АДРЕСАЦИИ
Рассмотрим команду сложения. В случае типового МП мы предположили, что одно из слагаемых было в аккумуляторе. В таком случае откуда поступает второе слагаемое и как оно находится? Многочисленные способы решения этой задачи называются способами адресации. В настоящей главе мы упоминали уже способы адресации во многие регистры, однако в этом вопросе имеется ряд тонкостей. Рассмотрим их подробнее.
Способы адресации нашего типового МП следующие: 1) неявный; 2) регистровый; 3) непосредственный; 4) прямой; 5) косвенный регистровый.
Два первых (регистровый и неявный) касаются операндов, расположенных в самом МП. Три последних (непосредственная, прямая и косвенная регистровая)—операндов, расположенных вне МП, т.е. в ячейках памяти или портах УВВ. Эти способы адресации присущи МП Intel 8080/8085.
Рассмотрим пример команды с неявной адресацией. Команда ВОССТАНОВИТЬ индикатор переноса принадлежит к группе команд передачи данных (см. табл. 6.5) и является однобайтовой, потому что дополнительные данные бесполезны для ее выполнения. Все события происходят в МП. Это действие представлено на рис. 6.39, а, не нужно искать данные или адреса в других регистрах МП, в памяти или портах УВВ. Команда STC восстанавливает индикатор переноса без воздействия на другие регистры или индикаторы.
В случае регистровой адресации операнд отыскивается во внутреннем регистре МП. Рассмотрим пример команды
ВЫЧЕСТЬ L из А, принадлежащей к группе арифметических команд (см. табл. 6.3). Регистровые операции (как и неявные) всегда являются однобайтовыми, потому что они не требуют данных и адресов вне МП. Все события происходят в МП. Операция показана на рис. 6.39, б.
Первое число (здесь 0000 1111) находится в аккумуляторе, другое (0000 ООП) является содержимым регистра L. После выполнения команды результат (0000 1100) помещается в аккумулятор.
В случае непосредственных команд операнд поступает в программную па мять из следующего байта (иногда из двух следующих байтов).
Операнд следует в команде непосредственно за КОП. Рассмотрим пример этого типа команд. Команда загрузить данные в SP, принадлежащую группе передачи данных (табл. 6.5) — это трехбайтовая команда. Обычно непосредственные команды точно определяются 2 или 3 байт. В примере, показанном на рис. 6.40,
2 байт данных берутся в памяти программы и помещаются в указатель стека. Младший байт 0111 0000 загружен первым, затем старший байт 0000 0010. Непосредственные команды удобны для осуществления загрузок инициализированных регистрами МП или указателем стека.
В случае прямых команд 2-й и 3-й байт памяти прямо указывают на адрес операнда. Они являются адресами в прямом способе адресации, тогда как при непосредственной адресации эти же байты были операндами. Операция передать данные из порта УВВ в А (группа команд передачи данных, см. табл. 6.5) является примером прямой команды из 2 байт*. Обычно эти команды состоят из 2 или 3 байт. В примере, приведенном на рис. 6.41, мы можем проследить передачу содержимого 1100 ООП из порта ввода в аккумулятор.
Адрес порта указан адресом, являющимся содержимым 2-го байт команды (здесь 0000 1010, или 1010).
В случае косвенных регистровых команд пара регистров HL указывает на адрес операнда в памяти. Рассмотрим пример: загрузить LOC (Н и L) в А с мнемоникой MOV А, М (группа команд передачи данных, см. табл. 6.5).
* Здесь двухбайтовая команда, поскольку для указания 8-разрядного адреса порта УВВ достаточно 1 байт (второго), 1-м байт команды является КОП. — Прим. ред.
Этот тип команд всегда однобайтовый. Обратимся к рис. 6.42, содержимое памяти по адресу 2080Н (1111 0000 в этом случае) загружено в аккумулятор. Соответствующий адрес (2080Н в нашем случае) памяти данных указан содержимым пары HL, которая здесь играет роль адресного регистра.
Другие МП снабжены иногда иными способами прямой адресации, а именно: нулевой или основной страницы; абсолютной; адресации действующей страницы или ожидаемой.
Упражнения
Назвать пять способов адресации в типовом микропроцессоре.
При использовании _______ (прямой, неявной) адресации нет необходимости отыскивать операнд.
6.87. Когда 2-й и 3-й байт команды указывают на адрес
операнда, речь идет о ____ (прямой, непосредственной)
адресации.
6.88. Когда используют команду непосредственного сложения, операнд поступает из памяти _____ (программы,
данных).
6.89. В _______ (регистровой, косвенной регистровой)
команде пара регистров HL МП указывает на адрес операнда.
6.90. Когда два операнда (например, два числа при вычитании) являются содержимым внутренних регистров
МП, может быть использован ______ (непосредственный,
регистровый) способ адресации.
6.91. Внутренние и регистровые команды являются байтовыми.
Команды прямой адресации являются ______ байтовыми.
Команды косвенной регистровой адресации являются ______ байтовыми.
Решения
6.85. Неявная, регистровая, непосредственная, прямая, косвенная регистровая. 6.86. Неявной. 6.87. Прямой. 6.88. Программы. 6.89. Косвенной регистровой. 6.90. Регистровый. 6.91. Одно. 6.92. Двух или трех 6.93. Одно.