Страница
4
Пример:
0200 А6 02 LDA #$02 Загрузить аккумулятор константой $02
Производимые действия:
$0200 $A6 [1]
$0201 $02 [2]
Объяснение:
[1] ЦП читает код операции $A6 - загрузить аккумулятор константой, следующей за кодом операции
[2] ЦП читает константу $02 по адресу $0201 и записывает ее в аккумулятор.
Команды с прямой адресацией имеют доступ к первым 256 ячейкам памяти и имеют длину два байта. Первым байтом является код команды, второй байт представляет собой младший байт адреса операнда. При использовании прямой адресации ЦП автоматически устанавливает в $00 старший байт адреса операнда. Исключение составляют команды BRSET и BRCLR, занимающие три байта и использующие прямую адресацию для доступа к операнду и относительную адресацию для определения точки перехода. В Таблице 1-3 представлены команды, которые используют режим прямой адресации к памяти.
Таблица 1-3. Команды, использующие прямую адресацию к памяти.
Команда |
Мнемоника |
Сложение с флагом переноса |
ADC |
Сложение |
ADD |
Логическое И |
AND |
Арифметический сдвиг влево |
ASL |
Арифметический сдвиг вправо |
ASR |
Сбросить бит в ячейке памяти |
BCLR |
Битовое сравнение ячейки памяти и аккумулятора |
BIT |
Переход, если бит n установлен |
BRCLR |
Переход, если бит n сброшен |
BRSET |
Сбросить бит в памяти |
BCLR |
Установить бит в памяти |
BSET |
Очистить |
CLR |
Сравнение аккумулятора и ячейки памяти |
CMP |
Дополнение |
COM |
Сравнение индексного регистра и ячейки памяти |
CPX |
Декремент на 1 |
DEC |
Исключающее ИЛИ ячейки памяти и аккумулятора |
EOR |
Инкремент на 1 |
INC |
Безусловный переход |
JMP |
Вызов подпрограммы |
JSR |
Загрузить аккумулятор содержимым ячейки памяти |
LDA |
Загрузить индексный регистр содержимым ячейки памяти |
LDX |
Логический сдвиг влево |
LSL |
Логический сдвиг вправо |
LSR |
Изменение знака |
NEG |
ИЛИ |
ORA |
Циклический сдвиг влево через флаг переноса |
ROL |
Циклический сдвиг вправо через флаг переноса |
ROR |
Вычитание с флагом переноса |
SBC |
Записать содержимое аккумулятора в ячейку памяти |
STA |
Записать содержимое индексного регистра в ячейку памяти |
STX |
Вычитание |
SUB |
Проверка знака и равенства нулю |
TST |
Пример:
0200 В6 50 LDA $50 Загрузить аккумулятор содержимым ячейки с адресом $50
Производимые действия:
$0200 $B6 [1]
$0201 $50 [2] и [3]
Объяснение:
[1] процессор читает код операции $В6 - загрузить аккумулятор, используя прямую адресацию.
[2] процессор считывает $50 по адресу $0201. $50 интерпретируется как младший байт 16-ти разрядного адреса.
[3] процессор считывает содержимое ячейки $0050 и помещает его в аккумулятор.
Команды, использующие расширенную адресацию, имеют доступ к любому адресу памяти и представлены в табл. 1-4. Длина таких команд составляет три байта, первый из которых является кодом операции, второй и третий байт - соответственно старшим и младшим байтом адреса операнда.
Таблица 1-4. Команды, использующие расширенный способ адресации.
Команда |
Мнемоника |
Сложение с флагом переноса |
ADC |
Сложение |
ADD |
Логическое И |
AND |
Битовое сравнение ячейки памяти и аккумулятора |
BIT |
Сравнение аккумулятора с ячейкой памяти |
CMP |
Сравнение индексного регистра с ячейкой памяти |
CPX |
Исключающее ИЛИ ячейки памяти и аккумулятора |
EOR |
Безусловный переход |
JMP |
Вызов подпрограммы |
JSR |
Загрузка аккумулятора содержимым ячейки памяти |
LDA |
Загрузка индексного регистра содержимым ячейки памяти |
LDX |
ИЛИ |
ORA |
Вычитание с флагом переноса |
SBC |
Записать содержимое аккумулятора в память |
STA |
Записать содержимое индексного регистра в память |
STX |
Вычитание |
SUB |