Способы адресации
4.3 Способы адресации
Чтобы МП оказался в состоянии выполнить команду, ему необходимо сообщить месторасположение данных, которые обрабатывает команда.
Тип обращения к данным называют способом адресации. Способ адресации - способ определения места операнда команды.
Хотя МП располагают разными наборами команд, принципы адресации в них одни и те же. Число команд значительно больше, чем число различных кодов операций, поскольку при формировании команды один и тот же код операции может использоваться при различных способах адресации.
Рассмотрим пять основных способов адресации: неявная, регистровая, непосредственная, прямая и косвенная.
Два первых способа адресации (регистровый и неявный) касаются операндов, расположенных в самом МП. Три последних способа адресации (непосредственный, прямой и косвенный) относятся к операндам, расположенным вне МП, т.е. в ячейках памяти или портах ВВ.
Разные ЭВМ имеют различные способы адресации. Набор способов адресации зависит от специализации ЭВМ. Кроме пяти основных в ЭВМ применяют и другие способы адресации. Например: страничная адресация, индексная адресация, относительная адресация.
Регистровая адресация.
Команды с регистровой адресацией занимают 1 байт потому что они не требуют данных и адресов вне МП. Адреса данных подразумеваются самой командой. Однобайтовые команды адресуются к данным, расположенным только внутри МП. Они оперируют данными, загруженными в регистр или регистровую пару.
Рекомендуемые материалы
Пример. На рисунке команда пересылки данных из регистра А в регистр В состоит из кода операции, адреса источника данных (регистр А) и адресат приемника данных ( регистр В).
0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
4 7
КОП адрес регистра В адрес регистра А
Это команда MOV B,A её код 47.
Команда пересылки содержимого регистра А в регистр В, в которой использована регистровая адресация.
Адрес регистра А – 111, адрес регистра В – 000. Адреса источника и приемника данных встроены в команду и таким образом указаны неявно. Команды с регистровой адресацией отличаются наибольшей величиной быстродействия.
Под номера регистров в поле команды отводятся определенные разряды: три младших (В 2 – В 0 ) кодируют номер регистра – источника, содержащего операнд, а три средних (В 5 - В 3 ) - номер регистра – приемника, в который засылается результат операции.
Принято следующее кодирование регистров:
000 – регистр В 100 - регистр Н
001 – регистр С 101 - регистр L
010 – регистр D 110 – ячейка памяти
011 - регистр Е 111 - аккумулятор
Неявная адресация.
Примерами команд с неявной адресацией могут служить следующие команды: STC, CMA, NOP.
STC – установить индикатор переноса.
CMA – инвертировать содержимое аккумулятора.
NOP - нет операций.
При выполнении команд с неявной адресацией не требуется искать данные или адреса в других регистрах МП, в памяти или портах УВВ.
Например, команда STC устанавливает индикатор переноса ( CY) 1 без воздействия на другие регистры или индикаторы. Таким образом, команда STC относится только к индикатору переноса и никакому другому регистру или памяти.
Команды с неявной адресацией занимают 1 байт памяти.
Непосредственная адресация.
Код операции команды с непосредственной адресацией размещается в первом байте. Сразу же за КОП следуют данные, занимающие 1 или 2 байт. Эти данные берутся не из памяти. Их предоставляет программист при записи команды. Следовательно, при использовании данного способа адресации не требуется указание адреса памяти, необходим только код операции, после которого записываются данные. Таким образом, операнд следует в команде непосредственно за КОП. Рассмотрим пример этого типа команд. Команда загрузить данные в SP - это трехбайтовая команда.
2000 | КОП 31 Н |
2001 | 0111 0000 |
2002 | 000 0010 |
младший байт загрузить SP
000 0010 | 01110000 |
старший байт
после операции
В рассматриваемом случае 2 байт данных берутся в памяти программы и помещаются в указатель стека. Младший байт 01110000 загружен первым, затем старший байт 000 0010.
Операции, задаваемые первым байтом команды (кодом операции), МП выполняет над данными, представленными её вторым байтом.
Прямая адресация.
Команды с прямой адресацией имеют длину, равную 2 или 3 байт. Первый байт предназначен для КОП, второй и третий - для адреса.
Адрес указывает область памяти, в которой находятся подлежащие обработке данные. Совместное использование 2 и 3 байтов команды позволяет адресоваться к любой из 65536 областей памяти.
При этом способе адресации адрес операнда содержится в самой команде и для его формирования не используется никаких дополнительных источников или регистров.
При неявной адресации адрес местоположения данных встроен в команду, и программист лишен возможности самостоятельно обращаться к данным по их адресу. При непосредственной адресации данные указываются в самой команде, следуя сразу за кодом операции. В этом случае программист тоже не может адресоваться к данным. И только при прямой адресации у него имеется такая возможность, явным образом задавая адрес необходимых данных.
Примером использования такой адресации может служить команда записи содержимого аккумулятора в память по адресу 000ЕН. Этот адрес занимает второй и третий байты команды. Байты команды показаны на рисунке.
|
0ЕН |
00Н |
2 – й байт
3 – й байт
Косвенная адресация.
Этот тип адресации реализуется командами длиной в один байт. Помимо кода операции в такой команде указывается номер регистра, содержимое которого - адрес местоположения данных в памяти.
Указанная адресация называется косвенной. При косвенной адресации соответствующая команда указывает, в какой регистровой паре размещаетсяадрес местоположения данных в памяти.
Рассмотрим пример: загрузить в аккумулятор данные из ячейки памяти, адрес которой находится в регистровой паре НL. Обратимся к следующему рисунку.
До операции После операции
Память данных передать аккумулятор
![]() |
2080H | 11110000 |
В лекции "1.3. Классификация компьютерных сетей" также много полезной информации.
![]() | |||||
![]() | |||||
![]() |
Адрес
Пара НL
На рисунке содержимое памяти по адресу 2080Н загружается в аккумулятор. Адрес ячейки памяти 2080Н указан содержимым пары НL, которая здесь играет роль адресного регистра.