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

 


По базе:  

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

реклама

 




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




Неявная адресация

Команды неявной адресации, такие как: десятичной коррекции аккумулятора (DAA), очистки старшего байта индексного регистра (CLRH) и деления (DIV), не выбирают операндов. Ряд команд неявной адресации работают с данными, находящимися в регистрах CPU, такие как: команда очистки аккумулятора (CLRA) и команда пересылки в аккумулятор содержимого регистра кодов признаков (TPA). Команды неявной адресации не обращаются к памяти и в большинстве случаев длина их равна одному байту. В таблице 3 приведен перечень команд, использующих неявную адресацию.

Написанный на языке ассемблера пример иллюстрирует использование режима неявной адресации. В примерах кодов, приведенных ниже и далее, по всему разделу, команды, напечатанные полужирным шрифтом, представляют примеры рассматриваемого режима адресации; значок (#) перед числом указывает на непосредственный операнд. По умолчанию база исчисления десятичная. Шестнадцатиричным числам предшествует значок ($). В ряде ассемблеров по умолчанию используется шестнадцатиричная система счисления - для правильного использования синтаксиса Вам необходимо внимательно прочитать документацию по используемому ассемблеру.

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

A657             EX_1     LDA          #$57       ; A = $57
AB45             ADD                   #$45       ; A = $9C
72               DAA                              ; A = $02 с установкой бита переноса є $102


A614             EX_2     LDA          #20        ; Загрузка делимого LS в A
8C                        CLRH                    ; Очистка MS делимого
AE03                      LDX          #3         ; Загрузка делителя в X
52                        DIV                     ; (H:A) /X®A=06, H=02


A630            EX_2      LDA          #$30       ; A = $30
87                        PSHA                    ; Занесение $30 в стек и декрементирование
                                                  ; указателя стека на 1

Таблица 3. Команды неявной адресации

Мнемоника Команда
ASLA, ASLX Арифметически сдвинуть влево (Arithmetic Shift Left)
ASRA, ASRX Арифметически сдвинуть вправо (Arithmetic Shift Right)
CLC Очистить бит переноса (Clear Carry Bit)
CLI Очистить маску прерывания (Clear Interrupt Mask)
CLRA, CLRX Очистить (Clear)
CLRH Очистить старший байт индексного регистра (Clear H (Index Register High))
COMA, COMX Выполнить дополнение до двух (Complement)
DAA Выполнить десятичную коррекцию аккумулятора (Decimal Adjust Accumulator)
DBNZA Декрементировать аккумулятор, перейти если не равно ($00) (Decrement Accumulator, Branch if Not Equal ($00))
DBNZX Декрементировать младший байт индексного регистра, перейти если не равно ($00) (Decrement X (Index Register Low), Branch if Not Equal ($00))
DECA, DECX Декрементировать (Decrement)
DIV Разделить (целочисленное деление 16-разрядного числа на 8-разрядное число) (Divide (Integer 16-Bit by 8-Bit Divide))
INCA, INCX Инкрементировать (Increment)
LSLA, LSLX Логически сдвинуть влево (Logical Shift Left)
LSRA, LSRX Логически сдвинуть вправо (Logical Shift Right)
MUL Перемножить (Multiply)
NSA Поменять местами нибблы аккумулятора (Nibble Swap Accumulator)
NOP Пустая операция (No Operation)
PSHA Занести аккумулятор в стек (Push Accumulator onto Stack)
PSHH Занести в стек старший байт индексного регистра (Push H (Index Register High) onto Stack)
PSHX Занести в стек младший байт индексного регистра (Push X (Index Register Low) onto Stack)
PULA Извлечь аккумулятор из стека (Pull Accumulator from Stack)
PULH Извлечь из стека старший байт индексного регистра (Pull H (Index Register High) from Stack)
PULX Извлечь из стека младший байт индексного регистра (Pull X (Index Register Low) from Stack)
ROLA, ROLX Вращать влево через перенос (Rotate Left through Carry)
RORA, RORX Вращать вправо через перенос (Rotate Right through Carry)
RSP Сбросить указатель стека в состояние $00FF (Reset Stack Pointer to $00FF)
RTI Вернуться из прерывания (Return from Interrupt)
RTS Вернуться из подпрограммы (Return from Subroutine)
SEC Установить бит переноса (Set Carry Bit)
SEI Установить маску прерывания (Set Interrupt Mask)
STOP Разрешить IRQ# и остановить генератор (Enable IRQ# and Stop Oscillator)
SWI Выполнить программное прерывание (Software Interrupt)
TAP Переслать аккумулятор в регистр кодов признаков (Transfer Accumulator to Condition Code Register)
TAX Переслать аккумулятор в младший байт индексного регистра (Transfer Accumulator to X (Index Register Low))
TPA Переслать содержимое регистра кодов признаков в аккумулятор (Transfer Condition Code Register to Accumulator)
TSTA, TSTX Проверить на отрицательное значение или ноль (Test for Negative or Zero)
TSX Переслать указатель стека в индексный регистр (Transfer Stack Pointer to Index Register (H:X))
TXA Переслать младший байт индексного регистра в аккумулятор (Transfer X (Index Register Low) to Accumulator)
TXS Переслать содержимое индексного регистра в указатель стека (Transfer Index Register (H:X) to Stack Pointer)
WAIT Разрешить прерывания и остановить CPU (Enable Interrupts and Halt CPU)


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





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