
Микропроцессоры Токхайм / 8.3. СПОСОБЫ АДРЕСАЦИИ
.doc8.3. СПОСОБЫ АДРЕСАЦИИ
Как и типовой МП, Intel 8085 использует пять способов адресации, а именно: неявную, регистровую, непосредственную, прямую, косвенную регистровую.
Неявная адресация. Команда STC (восстановить индикатор переноса) относится только к индикатору переноса и никакому другому регистру или памяти.
Регистровая адресация. Когда используются команды с этим способом адресации, операция и источник операнда точно определены (см. рис. 8.8, где показано выполнение
команды ADD С). В этом примере операнд в регистре источника (регистр С) складывается с операндом, содержащимся в аккумуляторе. После того как команда ADD С выполнена, сумма (0000 11112) помещается в аккумулятор. Обычно результат влияет на индикаторы регистра состояния.
Два операнда являются содержимым внутренних регистров МП (А и С). Команды регистровой адресации очень эффективны в том смысле, что используют только один байт памяти программы. Они быстро выполнимы, так как не используют операцию извлечения данных из памяти.
Непосредственная адресация. Команды непосредственной адресации являются командами, по которым данные следуют непосредственно за КОП. В качестве примера на рис. 8.9 показана команда ADI (непосредственное СЛОЖЕНИЕ). Микропроцессор извлекает КОП (С6Н в этом случае) из памяти программы. После декодирования МП определяет, что речь идет о команде с непосредственной адресацией. Он находит данные в ячейке памяти, следующей непосредственно за ячейкой, содержащей КОП. Эти следующие непосредственно за КОП данные (0000 10002) складываются с содержимым аккумулятора (0000 11002), где и помещается сумма (0001 01002).
Все команды непосредственной адресации МП Intel 8085, за исключением двух, используют аккумулятор как неявный операнд (например, команда ADI на рис. 8.9). Две
команды являются необычными — MVI (передать непосредственно), которая может передать данные, следующие непосредственно за КОП, в любой регистр или память, и команда LXI (загрузить непосредственно пару регистров), которая загружает 16-разрядное число в пару регистров. Эти команды, следовательно, не связаны с аккумулятором.
Прямая адресация. Операции, использующие прямую адресацию, точно описываются трехбайтовым форматом команд (рис. 8.10,а). Первый байт содержит КОП команды прямой адресации, второй — МБ и третий — СБ адреса операнда.
На рис. 8.10,б представлено выполнение команды LDA (загрузить А прямо) микропроцессором Intel 8085. Три байта команды представлены внизу слева. Код операции LDA— ЗАН, следующих 2 байта составляют 16-разрядный адрес (0200Н), и ячейка памяти данных с адресом (0200Н) загружается МП. Содержимое (1111 11112) этого адреса загружается в аккумулятор.
Косвенная регистровая адресация. Команды с такой адресацией обращаются в память, используя содержимое пары регистров для указания на адрес операнда. На рис. 8.11 приведен пример этого типа команд. Команда ADD М (сложить память) складывает содержимое ячейки памяти
по адресу, на который указывает пара регистров HL МП, с содержимым аккумулятора. В этом случае HL указывает на ячейку памяти 2050Н, операнд (0000 00012) в этой ячейке памяти складывается с содержимым аккумулятора (1111 11112), т.е. 0000 0001.+ 1111 1111 = 1 0000 0000. Восемь наименее значимых бит суммы помещаются в аккумулятор после выполнения команды ADD М, а соответствующие индикаторы в зависимости от результата устанавливаются или сбрасываются.
Комбинированные способы адресации. Несколько команд МП Intel 8085 используют сочетание различных способов адресации. Вызов подпрограммы CALL, например, сочетает прямую и косвенную регистровую адресации. Прямой адрес в CALL точно описывает адрес вызываемой подпрограммы, адрес косвенного регистра является адресом указателя стека. Команда CALL помещает в стек прежде всего текущее содержимое счетчика команд по точно описанному указателем стека адресу, затем процессор загружает адрес прямо в счетчик команд. Наконец МП ветвится на подпрограмму, адрес которой является теперь содержимым счетчика команд.
Упражнения
8.26. Перечислить пять способов адресации МП Intel 8085.
Команда CMC (инвертировать перенос) МП Intel 8085 воздействует только на индикатор переноса, но не на другие регистры или память. Она использует, следовательно, _________ (прямую, неявную) адресацию.
Команда MOV В, А (передает А в В) передает содержимое одного регистра в другой. Команда MOV В, А
использует, таким образом, ______ (непосредственную,
регистровую) адресацию.
8.29. См. рис. 8.12. У команды MVI А _____ (неявная,
непосредственная) адресация.
8.30. См. рис. 8.13. У команды SUB М _______ (регистровая, косвенная регистровая) адресация.
8.31. См. рис. 8.13. Первый член находится в аккумуляторе, второй — в ячейке памяти ____.
Решения
8.26. Неявная, регистровая, непосредственная, прямая, косвенная регистровая. 8.27. Неявную. 8.28. Регистровую. 8.29. Непосредственная. 8.30. Косвенная регистровая. 8.31. 2060Н.