Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > HC08 > Архитектура

реклама

 




Мероприятия:




Адресация по указателю стека

Адресация по указателю стека с 8-разрядным смещением

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

Если прерывания запрещены, то этот режим позволяет использовать указатель стека в качестве второго "индексного" регистра.

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

Командами, связанными с указателем стека, для организации обращения используется дополнительный байт и, следовательно, при их выполнении затрачивается на один цикл больше, чем при выполнении аналогичных команд с индексной адресацией.

Адресация по указателю стека с 16-разрядным смещением

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

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

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

Ниже приведены примеры кодов с использованием режима адресации по указателю стека с 8- и 16-разрядным смещением. В первом примере значение $20 сохраняется в ячейке $10, SP = $10 + $FF = $10F и, затем, содержимое ячейки декрементируется до состояния ноль. Во втором примере аккумулятор загружается содержимым ячейки $250, SP = $250 + $FF = $34F.

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

450100                     LDHX        #$0100
94                         TXS                      ; Сброс указателя стека в состояние $00FF
A620                       LDA         #$20         ; A = $20
9EE710                     STA         $10, SP      ; Ячейка $10F = $20
9E6B10FC         LP        DBNZ        $10, SP, LP  ; 8-разрядное смещение
                                                    ; Декремент содержимого ячейки $10F до
                                                    ; состояния ноль


450100                     LDHX        #$0100
94                         TXS                      ; Сброс указателя стека в состояние $00FF
9ED60250                   LDA         $0250, SP    ; 16-разрядное смещение
                                                    ; Загрузка A содержимым ячейки $34F


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

Таблица 8. Команды адресации по указателю стека

Команда Мнемоника 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 Ц  
Загрузить аккумулятор содержимым памяти (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 Ц  


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





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники