Команды неявной адресации, такие как: десятичной коррекции аккумулятора (DAA), очистки старшего байта индексного регистра (CLRH) и деления (DIV), не выбирают операндов. Ряд команд неявной адресации работают с данными, находящимися в регистрах CPU, такие как: команда очистки аккумулятора (CLRA) и команда пересылки в аккумулятор содержимого регистра кодов признаков (TPA). Команды неявной адресации не обращаются к памяти и в большинстве случаев длина их равна одному байту. В таблице 3 приведен перечень команд, использующих неявную адресацию.
Написанный на языке ассемблера пример иллюстрирует использование режима неявной адресации. В примерах кодов, приведенных ниже и далее, по всему разделу, команды, напечатанные полужирным шрифтом, представляют примеры рассматриваемого режима адресации; значок (#) перед числом указывает на непосредственный операнд. По умолчанию база исчисления десятичная. Шестнадцатиричным числам предшествует значок ($). В ряде ассемблеров по умолчанию используется шестнадцатиричная система счисления - для правильного использования синтаксиса Вам необходимо внимательно прочитать документацию по используемому ассемблеру.
Таблица 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) |