Смекни!
smekni.com

Motorola MC68HC705C8 (стр. 3 из 12)

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

Пример:

0200 С6 06 Е5 LDA $05E5 Загрузить аккумулятор содержимым ячейки с адресом $05Е5

Производимые действия:

$0200 $C6 [1]

$0201 $05 [2]

$0202 $E5 [3]

Объяснение:

[1] процессор читает код операции $C6 - загрузить аккумулятор, используя расширенную адресацию.

[2] процессор считывает $06 по адресу $0201. $06 интерпретируется как старший байт 16-ти разрядного адреса.

[3] процессор считывает $E5 по адресу $0202. $E5 интерпретируется как младший байт 16-ти разрядного адреса

[4] процессор считывает содержимое ячейки $06E5 и помещает его в аккумулятор.

Индексная адресация без смещения часто используется для перемещения по таблице или хранения адреса обращения к RAM или регистру ввода/вывода. В таблице 1-5 приведен список команд, которые используют индексную адресацию без смещения. Команды, использующие индексную адресацию без смещения, имеют длину один байт и имеют доступ к переменным в пределах первых 256 ячеек памяти. Индексный регистр в этом случае содержит младший байт адреса операнда. ЦП автоматически устанавливает в $00 старший байт адреса операнда, поэтому эти команды имеют доступ к адресам от $0000 до $00FF.

Таблица1-5. Команды, использующие индексную адресацию.

Команда Мнемоника Без смещ 8 бит смещ 16 бит смещ
Сложение с флагом переноса ADC
Сложение ADD
Логическое И AND
Арифметический сдвиг влево ASL
Арифметический сдвиг вправо ASR
Битовое сравнение ячейки памяти и аккумулятора BIT
Очистить CLR
Сравнение аккумулятора с ячейкой памяти CMP
Дополнение COM
Сравнение индексного регистра с ячейкой памяти CPX
Декремент на 1 DEC
Исключающее ИЛИ ячейки памяти и аккумулятора EOR
Инкремент на 1 INC
Безусловный переход JMP
Вызов подпрограммы JSR
Загрузка аккумулятора содержимым ячейки памяти LDA
Загрузка индексного регистра содержимым ячейки памяти LDX
Логический сдвиг влево LSL
Логический сдвиг вправо LSR
Изменение знака NEG
ИЛИ ORA
Циклический сдвиг влево через флаг переноса ROL
Циклический сдвиг вправо через флаг переноса ROR
Вычитание с флагом переноса SBC
Запись содержимого аккумулятора в ячейку памяти STA
Запись содержимого индексного регистра в ячейку памяти STX
Вычитание SUB
Проверка знака и равенства нулю TST

Команды с индексной адресацией с 8-разрядным смещением имеют длину два байта, что позволяет обращаться к операндам в пределах первых 511 байт. Процессор складывает беззнаковый байт в индексном регистре с беззнаковым байтом, следующим за кодом операции. Полученная сумма является адресом операнда. Эта команда позволяет адресовать операнд в пределах от $0000 до $01FE. Индексную адресацию с 8-разрядным смещением удобно применять для выбора k-го элемента из n элементов таблицы. Таблица может начинаться с любого адреса в пределах первых 256 байт и занимать адреса до $01FE. Число k обычно записывается в индексный регистр. Адресом начала таблицы является байт, следующий за кодом операции. В Таблице 1-5 приведен список команд, использующих индексную адресацию с 8-разрядным смещением.

Индексную адресацию с 16-разрядным смещением удобно использовать для выбора k-го элемента в таблице из n элементов в любой точке адресного пространства. Как и в случае прямой и расширенной адресации, ассемблер фирмы Motorola определяет автоматически наиболее короткую форму индексной адресации. В Таблице 1-5 приведен список команд, которые используют индексную адресацию с 16-разрядным смещением.

Относительная адресация используется только командами перехода и битового сравнения. ЦП вычисляет адрес перехода посредством сложения байта, следующего за кодом операции, с содержимым программного счетчика, если выполняется условие перехода. Если условие перехода не выполняется, процессор переходит на выполнение следующей команды. Чтобы определить направление перехода, смещение является знаковой величиной, дополнение байта до двух дает переход в пределах от -127 до 128 байт от адреса команды, следующей за командой перехода. При использовании ассемблера фирмы Motorola программисту не требуется вычислять смещение, потому что ассемблер вычисляет требуемое смещение и проверяет длину перехода на допустимость. В Таблице 1-6 перечислены команды, которые используют относительную адресацию.

Таблица 1-6. Команды, использующие относительную адресацию.

Команда Мнемоника
Перейти, если сброшен флаг переноса BCC
Перейти, если флаг переноса установлен BCS
Перейти, если операнды равны BEQ
Перейти, если сброшен перенос из младшей тетрады BHCC
Перейти, если установлен флаг переноса из младшей тетрады BHCS
Перейти, если больше BHI
Перейти, если больше или равно BHS
Перейти, если активизирован вход запроса прерывания BIH
Перейти, если не активизирован вход запроса прерывания BIL
Перейти, если меньше BLO
Перейти, если меньше или равно BLS
Перейти, если бит маскирования прерывания сброшен BMC
Перейти, если результат отрицательный BMI
Перейти, если бит маскирования прерывания установлен BMS
Перейти, если не равно BNE
Перейти, если результат положительный BPL
Безусловный переход BRA
Перейти, если сброшен бит n BRCLR
Перейти, если установлен бит n BRSET
Нет перехода BRN
Вызов подпрограммы BSR

1.5. Набор команд.

Команды процессора можно разделить на следующие группы:

команды пересылки данных

команды передачи управления

арифметические и логические команды, битовые операции.

Рассмотрим работу команд каждой группы подробнее. При этом будем использовать следующие условные знаки;

Операнды:

()-содержимое регистра или ячейки памяти

-загружается из

-извлекается из стека

-загружается в стек

* -логическое умножение (И)

+-арифметическое сложение (кроме тех случаев, где используется как ИЛИ в логических операциях)

х-умножение

\-отрицание

Регистры:

AC -аккумулятор

CCR -регистр признаков

Х -индексный регистр

РС -программный счетчик

РСН -старший байт программного счетчика

PCL -младший байт программного счетчика

SP -указатель стека

Память и адресация:

М -ячейка памяти либо ее содержимое в зависимости от режима адресации

Rel -относительное смещение

Биты регистра признаков: