В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > HC08 > Архитектура
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Индексная адресация

Индексная адресация без смещения

Команды индексной адресации без смещения являются однобайтовыми командами, обращающимися к данным по различным адресам. Младший байт X индексного регистра содержит младший байт условного адреса операнда; старший байт H индексного регистра содержит старший байт условного адреса. Благодаря использованию регистра H адресация не ограничивается первыми 256 байтами памяти, как это свойственно HC05.

Если не использовать команды HC08, модифицирующие H, (AIX; CBEQ (ix+); LDHX; MOV (dix+); MOV (ix+d); DIV; PULH; TSX), то значение H будет $00, что обеспечивает полную совместимость кодов с исходными кодами команд семейства HC05.

Индексные, без смещения, команды могут перемещать указатель по таблице или сохранять наиболее часто используемый адрес RAM или ячейку ввода/вывода (I/O).

В таблице 7 представлены команды, использующие индексную, без смещения, адресацию.

Индексная адресация с 8-разрядным смещением

Команды индексной, с 8-разрядным смещением, адресации являются двухбайтовыми командами, способными обращаться к данным по различным адресам. CPU прибавляет байты (без знака), находящиеся в индексном регистре (H:X), к байтам (без знака), следующим за операционным кодом. Сумма представляет собой действительный адрес операнда.

Если не использовать команды HC08, модифицирующие H, (AIX; CBEQ (ix+); LDHX; MOV (dix+); MOV (ix+d); DIV; PULH; TSX), то значение H будет $00, что обеспечивает полную совместимость кодов с исходными кодами команд семейства HC05.

Индексные, с 8-разрядным смещением, команды используются для выбора k-го элемента в n-элементной таблице. Таблица может начинаться в любом месте карты памяти и распространяться так далеко, насколько это позволит карта адресов. Значение k находится обычно в H:X, а адресом начала таблицы является байт, следующий за операционным кодом. При таком использовании H:X этот режим адресации ограничивается первыми 256 адресами памяти. Таблица может быть размещена в любом месте карты адресов если H:X использовать в качестве базового адреса а следующий за операционным кодом байт использовать в качестве смещения.

В таблице 7 приведен перечень команд, использующих индексную, с 8-разрядным смещением, адресацию.

Индексная адресация с 16-разрядным смещением

Команды индексной адресации с 16-разрядным смещением являются трехбайтовыми командами, способными обращаться к данным по адресам, размещенным во всем пространстве памяти. CPU суммирует содержимое (без знака) индексного регистра (H:X) с 16-разрядным (без знака) словом, сформированным двумя байтами, следующими за операционным кодом. Первый байт после операционного кода является старшим байтом 16-разрядного смещения, следующий байт является младшим байтом 16-разрядного смещения.

Как и при прямом и расширенном режимах адресации большинство ассемблеров определяет кратчайшую форму индексной адресации.

В таблице 7 приведен перечень команд, использующих индексную адресацию с 16-разрядным смещением.

Индексные, с 16-разрядным смещением, команды используются для выбора k-го элемента в n-элементной таблице. Таблица может начинаться в любом месте карты памяти и распространяться так далеко, насколько это позволит карта адресов. Значение k находится обычно в H:X, а адресом начала таблицы является байт, следующий за операционным кодом.

В нижеследующем примере для иллюстрации трех различных типов индексной адресации используется команда JMP (команда безусловного перехода).

Машинный код    Метка    Операция     Операнд     Комментарий

FC                       JMP          , X         ; Без смещения
                                                  ; Переход к адресу, указанному в H:X


ECFF                     JMP          $FF, X      ; 8-разрядное смещение
                                                  ; Переход к адресу, указанному в H:X + $FF


DC10FF                   JMP          $10FF, X    ; 16-разрядное смещение
                                                  ; Переход к адресу, указанному 
                                                  ; в H:X + $10FF


Таблица 7. Команды индексной адресации

Команда Мнемоника Без смещения 8-разрядное смещение 16-разрядное смещение
Сложить память и перенос с аккумулятором (Add Memory and Carry to Accumulator) ADC Ц Ц Ц
Сложить память с аккумулятором (Add Memory and Accumulator) ADD Ц Ц Ц
Выполнить логическое AND памяти с аккумулятором (Logical AND of Memory and Accumulator) AND Ц Ц Ц
Арифметически сдвинуть память влево (Arithmetic Shift Left Memory) ASL* Ц Ц  
Арифметически сдвинуть память вправо (Arithmetic Shift Right Memory) ASR Ц Ц  
Поразрядно сравнить память с аккумулятором (Bit Test Memory with Accumulator) BIT Ц Ц Ц
Очистить память (Clear Memory) CLR Ц Ц  
Сравнить аккумулятор с памятью (Compare Accumulator with Memory) CMP Ц Ц Ц
Выполнить дополнение до двух содержимого памяти (Complement Memory) COM Ц Ц  
Сравнить младший байт индексного регистра с памятью (Compare X (Index Register Low) with Memory) CPX Ц Ц Ц
Декрементировать память и перейти, если не равно ($00) (Decrement Memory and Branch if Not Equal ($00)) DBNZ Ц Ц  
Декрементировать память (Decrement Memory) DEC Ц Ц  
Выполнить исключающее OR памяти и аккумулятора (Exclusive OR Memory with Accumulator) EOR Ц Ц Ц
Инкрементировать память (Increment Memory) INC Ц Ц  
Выполнить переход (Jump) JMP Ц Ц Ц
Выполнить переход в подпрограмму (Jump to Subroutine) JSR Ц Ц Ц
Загрузить аккумулятор содержимым памяти (Load Accumulator from Memory) LDA Ц Ц Ц
Загрузить младший байт индексного регистра содержимым памяти (Load X (Index Register Low) from Memory) LDX Ц Ц Ц
Выполнить логический сдвиг памяти влево (Logical Shift Left Memory) LSL* Ц Ц  
Выполнить логический сдвиг памяти вправо (Logical Shift Right Memory) LSR Ц Ц  
Выполнить дополнение до двух содержимого памяти (Negate Memory) NEG Ц Ц  
Выполнить включающее OR содержимого аккумулятора и памяти (Inclusive OR Accumulator and Memory) ORA Ц Ц Ц
Выполнить вращение памяти влево через перенос (Rotate Memory Left through Carry) ROL Ц Ц  
Выполнить вращение памяти вправо через перенос (Rotate Memory Right through Carry) ROR Ц Ц  
Вычесть память и перенос из аккумулятора (Subtract Memory and Carry from Accumulator) SBC Ц Ц Ц
Сохранить аккумулятор в памяти (Store Accumulator in Memory) STA Ц Ц Ц
Сохранить младший байт индексного регистра в памяти (Store X (Index Register Low) in Memory) STX Ц Ц Ц
Вычесть память из аккумулятора (Subtract Memory from Accumulator) SUB Ц Ц Ц
Проверить память на отрицательное значение или ноль (Test Memory for Negative or Zero) TST Ц Ц  

*) - ASL = LSL


<-- Предыдущая страница Оглавление Следующая страница -->