|
Поиск по сайту: |
|
По базе: |
![]() |
| Главная страница > Обзоры по типам > Микроконтроллеры > HC08 > Архитектура | |||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Прямая адресацияБольшинство команд прямой адресации всего двумя байтами способны обращаться к любым первым 256 адресам памяти. Первый байт является операционным кодом и второй байт является младшим байтом адреса операнда. Значение старшего байта действительного адреса принимается равным $00 и не включается в байты команды, что сокращает пространство памяти программ и время выполнения команды. Таким образом прямая адресация ограничивается использованием области памяти с адресами $0000 - $00FF, называемой прямой страницей, или страницей 0. Команды прямой адресации занимают в пространстве памяти программ на один байт меньше, чем эквивалентные команды расширенной адресации. За счет исключения дополнительного обращения к памяти время выполнения команды сокращается на один цикл - что дает существенную экономию в случае длинных программ. Большинство микроконтроллеров занимают под RAM не всю область $0000 - $00FF, что позволяет разработчикам использовать свободные ячейки этой области для размещения наиболее часто используемых переменных, что также сокращает время выполнения команд. Команды BRSET и BRCLR являются трехбайтовыми командами, использующими прямую адресацию для обращения к операндам и относительную адресацию для определения пункта назначения перехода. Команды CPHX, STHX и LDHX являются двухбайтовыми командами, выбирающими 16-разрядные операнды. Старшие байты выбираются прямой адресацией; младшие байты выбираются прямой адресацией + 1
В таблице 5 перечислены команды использующие прямую адресацию. Нижеследующий пример кодов содержит две команды прямой адресации: STHX (сохранить H:X в памяти) и CPHX (сравнить H:X с памятью). Первая команда (STHX) инициализирует установку TEMP ячейки RAM в нулевое состояние и вторая команда (STHX) загружает в ячейку TEMP состояние $5555. Команда CPHX сравнивает содержимое H:X с значением RAM:(RAM + 1). В данном примере RAM:(RAM + 1) = TEMP = $50:$51 = $5555.
Машинный код Метка Операция Операнд Комментарий
RAM EQU $50 ; Соответствие RAM
ROM EQU $6E00 ; Соответствие ROM
ORG $RAM ; Начало RAM
TEMP RMB 2 ; Резервированные 2 байта
ORG $ROM ; Начало ROM
5F START CLRX ; X = 0
8C CLRH ; H = 0
3550 STHX TEMP ; H:X=0 > temp
455555 LDHX #$5555 ;Загрузка H:X содержимым $5555
3550 STHX TEMP ; Temp= $5555
7550 BAD_PART CPHX RAM ; RAM=temp
26FC BNE BAD_PART ; RAM=temp будет оставаться
; неизменным пока не произойдет
; ошибка!
20F1 BRA START ; Снова выполнить то же
Таблица 5. Команды прямой адресации
*) - ASL = LSL
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||