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 -относительное смещение

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

H, I, N, C, Z-в соответствии с главой 1.3

Состояние определенных бит до выполнения операции (n=7, 6, ... , 0):

An -бит n аккумулятора

Xn -бит n индексного регистра

Mn-бит n ячейки памяти

Состояние определенных бит после выполнения операции:

Rn-бит n результата

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


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


LDA Загрузить аккумулятор содержимым ячейки памяти.

Команда пересылает содержимое ячейки памяти в аккумулятор. В соответствии с записываемыми в аккумулятор данными устанавливаются биты в регистре признаков.

N R7 .

Устанавливается, если установлен старший бит аккумулятора, в противном случае сбрасывается.

Z R7\*R6\*R5\*R4\*R3\*R2\*R1\*R0\

Устанавливается, если в аккумуляторе $00, иначе сбрасывается.


LDX Загрузить индексный регистр содержимым ячейки памяти.

Команда пересылает содержимое ячейки памяти в индексный регистр. В соответствии с записываемыми данными устанавливаются разряды регистра признаков.

N R7

Устанавливается, если установлен старший бит индексного регистра, в противном случае сбрасывается.

Z R7\*R6\*R5\*R4\*R3\*R2\*R1\*R0\

Устанавливается, если в индексный регистр записано число $00, иначе сбрасывается.


STA Записать содержимое аккумулятора в ячейку памяти.

Переместить содержимое аккумулятора в ячейку памяти. Содержимое аккумулятора остается неизменным.

N R7

Устанавливается, если установлен старший бит аккумулятора, в противном случае сбрасывается.

Z R7\*R6\*R5\*R4\*R3\*R2\*R1\*R0\

Устанавливается, если в аккумулятор записано число $00, иначе сбрасывается.


STX Записать содержимое индексного регистра в ячейку памяти.

Переместить содержимое индексного регистра в ячейку памяти. Содержимое индексного регистра не изменяется.

N R7

Устанавливается, если установлен старший бит в пересылаемом байте, в противном случае сбрасывается.

Z R7\*R6\*R5\*R4\*R3\*R2\*R1\*R0\

Устанавливается, если пересылаемое число $00, иначе сбрасывается.


TAX Записать содержимое аккумулятора в индексный регистр

X¬(AC)

Записать в индексный регистр содержимое аккумулятора. Содержимое аккумулятора не изменяется.

Регистр признаков не изменяется.


TXA Записать содержимое индексного регистра в аккумулятор

AC¬(X)

Записать в аккумулятор содержимое индексного регистра. Содержимое индексного регистра не изменяется.

Регистр признаков не изменяется.


CLR Обнулить.

AC ¬ $00 или M ¬ $00 или X ¬ $00

В аккумулятор, индексный регистр или ячейку памяти записывается ноль.

N 0

Z = 1


RSP Инициализация указателя стека.

SP¬$00FF

Установить указатель стека на вершину стека.

Регистр признаков не изменяется.


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

Команды передачи управления включают в себя команды безусловного перехода, команды вызова подпрограммы и возврата из нее, а также команды условных переходов (ветвления) по различным условиям (состояниям флагов) и по состоянию битов. Команды ветвления вызывают переход по состоянию любого бита из первых 256 ячеек памяти. Эти команды имеют длину три байта и являются комбинацией прямой и относительной адресации. Прямо адресуется бит для тестирования, адрес которого содержится во втором байте команды. Третий байт представляет собой знаковое смещение для перехода по состоянию бита. Процессор вычисляет адрес перехода, складывая содержимое программного счетчика и третьего байта команды, если условие перехода выполняется. Условие тестирования битов содержится в коде операции. Диапазон перехода - от -128 до +127 байт от адреса следующей за командой ячейки памяти. Процессор, кроме того, записывает тестируемый бит в бит переноса регистра условий (СС).


BRA Безусловный переход.

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

PC ¬(PC)+$0002+Rel.

В исходном тексте адрес перехода задается абсолютным значением, символом или выражением, которое может быть вычислено ассемблером (заметим, что правила записи меток или выражений для вычисления адреса перехода могут различаться при использовании разных ассемблеров). Ассемблер вычисляет смещение Rel из абсолютного адреса перехода и текущего значения программного счетчика PC.

Регистр признаков не изменяется.


BRN Нет перехода.

Команда используется как двухбайтовый вариант команды NOP (нет операции) при отладке программ, когда нужно отменить действие команды перехода, и выполняется за 3 цикла. Действие этой команды противоположно действию команды BRA.

Регистр признаков не изменяется.


BRCLR Переход, если бит n ячейки памяти равен 0.

PC ¬ (PC)+$0003+Rel Если бит n ячейки M равен нулю.

Команда проверяет бит n ячейки памяти M на равенство нулю. Переход осуществляется, если проверяемый бит равен нулю. M может быть в адресном пространстве RAM или регистров ввода/вывода в пределах от $0000 до $00FF (таким образом используется прямая адресация). Бит C регистра признаков устанавливается в состояние тестируемого бита.

C Устанавливается, если Mn=1, иначе сбрасывается.


BRSET Переход, если бит n ячейки памяти равен 1.

PC ¬(PC)+$0003+Rel Если бит n ячейки M равен единице.

Команда проверяет бит n ячейки памяти M на равенство единице. Переход осуществляется, если проверяемый бит равен единице. M может быть в адресном пространстве RAM или регистров ввода/вывода в пределах от $0000 до $00FF (таким обрезом используется прямая адресация). Бит C регистра признаков устанавливается в состояние тестируемого бита.

C Устанавливается, если Mn=1, иначе сбрасывается.


BHI Переход, если больше.

PC¬(PC)+$0002+Rel Если (C)+(Z)=0

т.е. если (AC)>(M) (беззнаковые двоичные числа)

Возникает переход, если оба бита C и Z регистра признаков сброшены в ноль. Когда команда BHI используется сразу после выполнения команд CMP или SUB, возникает переход, если беззнаковое число, содержащееся в аккумуляторе, больше, чем беззнаковое число в ячейке памяти M.

Регистр признаков не изменяется.


BLS Переход , если меньше или равно.

PC¬(PC)+$0002+Rel Если [(C)+(Z)]=1

т.е. если (AC)Ј(M) (беззнаковые двоичные числа)

Возникает переход, если бит C или Z регистра признаков установлен в единицу. Когда команда BLS используется сразу после выполнения команд CMP или SUB, возникает переход, если беззнаковое число, содержащееся в аккумуляторе, меньше или равно беззнакового числа в ячейке памяти M.

Регистр признаков не изменяется.


BCC Переход, если сброшен флаг переноса.

PC¬(PC)+$0002+Rel Если (C)=0

Команда BCC является полным аналогом команды BHS. Проверяется состояние бита C регистра признаков. Переход возникает, если бит С сброшен.

Регистр признаков не изменяется.


BHS Переход, если больше или равно.

Команда BHS является полным аналогом команды BCC. Мнемонику BCC принято использовать после команд CMP и SUB, так как переход в данном случае возникает, если беззнаковое число в аккумуляторе больше или равно беззнакового числа, содержащегося в ячейке памяти M.


BCS Переход, если установлен флаг переноса.

PC¬(PC)+$0002+Rel Если (C)=-1

Команда BCS является полным аналогом команды BLO. Тестируется состояние бита C регистра признаков. Если бит C установлен в единицу, возникает переход.

Регистр признаков не изменяется.


BLO Переход, если меньше.

PC¬(PC)+@0002+Rel Если (C)=1

т.е. если (ACCX)


Информация о работе «Motorola MC68HC705C8»
Раздел: Радиоэлектроника
Количество знаков с пробелами: 33580
Количество таблиц: 9
Количество изображений: 3

0 комментариев


Наверх