<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://emuverse.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DmitTrix</id>
	<title>Emuverse - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://emuverse.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DmitTrix"/>
	<link rel="alternate" type="text/html" href="https://emuverse.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/DmitTrix"/>
	<updated>2026-05-05T08:44:39Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=MOS_Technology_6502/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4&amp;diff=1452</id>
		<title>MOS Technology 6502/Система команд</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=MOS_Technology_6502/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4&amp;diff=1452"/>
		<updated>2009-07-26T13:35:40Z</updated>

		<summary type="html">&lt;p&gt;DmitTrix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Emuverse}}&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
== Регистры ==&lt;br /&gt;
* A — аккумулятор, 8 бит;&lt;br /&gt;
* X, Y — индексные регистры, 8 бит;&lt;br /&gt;
* PC — счетчик команд, 16 бит;&lt;br /&gt;
* S — указатель стека, 8 бит;&lt;br /&gt;
* P — регистр состояния;&lt;br /&gt;
** &amp;lt;tt&amp;gt;C (P0)&amp;lt;/tt&amp;gt; — перенос;&lt;br /&gt;
** &amp;lt;tt&amp;gt;Z (P1)&amp;lt;/tt&amp;gt; — ноль;&lt;br /&gt;
** &amp;lt;tt&amp;gt;I (P2)&amp;lt;/tt&amp;gt; — запрет внешних прерываний — IRQ (I=0 — прерывания разрешены);&lt;br /&gt;
** &amp;lt;tt&amp;gt;D (P3)&amp;lt;/tt&amp;gt; — режим BCD для инструкций сложения и вычитания с переносом;&lt;br /&gt;
** &amp;lt;tt&amp;gt;B (P4)&amp;lt;/tt&amp;gt; — обработка прерывания (B=1 после выполнения команды BRK);&lt;br /&gt;
** &amp;lt;tt&amp;gt;1 (P5)&amp;lt;/tt&amp;gt; — не используется, равен 1;&lt;br /&gt;
** &amp;lt;tt&amp;gt;V (P6)&amp;lt;/tt&amp;gt; — переполнение;&lt;br /&gt;
** &amp;lt;tt&amp;gt;N (P7)&amp;lt;/tt&amp;gt; — знак. Равен старшему биту значения, загруженного в A, X или Y в результате выполнения операции (кроме TXS).&lt;br /&gt;
&lt;br /&gt;
== Режимы адресации и страницы ==&lt;br /&gt;
Вся адресуемая 6502 память разбита на страницы по 256 байт. Если при обработке команды происходит пересечение границы страницы, инструкции могут выполняться несколько по-другому, что описано ниже. Две страницы имеют особое значение — страница 0 (00H-FFH), называемая «нулевой» — для этой страницы выделен особый режим адресации с однобайтовым адресом. Другая особая страница — № 1 (100H-1FFH), отведенная под стек. Так как регистр указателя стека восьмиразрядный, при обращении к стеку к значению регистра всегда добавляется 100H.&lt;br /&gt;
&lt;br /&gt;
Многие команды могут работать с несколькими режимами адресации, которые перечислены ниже:&lt;br /&gt;
&lt;br /&gt;
{| class=border&lt;br /&gt;
! Название англ.&lt;br /&gt;
! Название русск.&lt;br /&gt;
! Описание&lt;br /&gt;
! Обозначение&lt;br /&gt;
! Пример&lt;br /&gt;
! Код&lt;br /&gt;
|-&lt;br /&gt;
| Immediate&lt;br /&gt;
| Непосредственная&lt;br /&gt;
| Операнд располагается сразу за кодом инструкции&lt;br /&gt;
| #&lt;br /&gt;
| LDA #$0A&lt;br /&gt;
| A9 02&lt;br /&gt;
|-&lt;br /&gt;
| Absolute&lt;br /&gt;
| Абсолютная (прямая)&lt;br /&gt;
| Адрес операнда располагается сразу за кодом инструкции&lt;br /&gt;
|&lt;br /&gt;
| LDA $1234&lt;br /&gt;
| AD 34 12&lt;br /&gt;
|-&lt;br /&gt;
| Zeropage&lt;br /&gt;
| Абсолютная на нулевой странице (для адресов 00H-0FFH)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| LDA $2F&lt;br /&gt;
| A5 2F&lt;br /&gt;
|-&lt;br /&gt;
| Accumulator/Implied&lt;br /&gt;
| Аккумуляторная/Неявная&lt;br /&gt;
| Операнд подразумевается самой командой.&lt;br /&gt;
|&lt;br /&gt;
| TAX&lt;br /&gt;
| AA&lt;br /&gt;
|-&lt;br /&gt;
| Absolute, x&amp;lt;br /&amp;gt;Absolute, y&lt;br /&gt;
| Абсолютная индексная&lt;br /&gt;
| Адрес, указанный за кодом операции, складывается со значением индексного регистра&lt;br /&gt;
| ADDR, X&amp;lt;br /&amp;gt; ADDR, Y&lt;br /&gt;
| nowrap | LDA $1234, X&amp;lt;br /&amp;gt; LDA $1234, Y&lt;br /&gt;
| nowrap | D9 34 12&amp;lt;br /&amp;gt;DD 34 12&lt;br /&gt;
|-&lt;br /&gt;
| Zeropage, x&amp;lt;br /&amp;gt;Zeropage, y&lt;br /&gt;
| Абсолютная индексная на нулевой странице&lt;br /&gt;
|&lt;br /&gt;
| ADDR, X&amp;lt;br /&amp;gt; ADDR, Y&lt;br /&gt;
| LDA $2F, X&lt;br /&gt;
| B5 2F&lt;br /&gt;
|-&lt;br /&gt;
| Indirect&lt;br /&gt;
| Косвенная&lt;br /&gt;
| Только в команде JMP. Новый адрес для счетчика команд берется из памяти, по адресу, указанному за кодом команды&lt;br /&gt;
| (ADDR)&lt;br /&gt;
| JMP ($1234)&lt;br /&gt;
| 6С 34 12&lt;br /&gt;
|-&lt;br /&gt;
| Indirect, x&lt;br /&gt;
| Индексно-косвенная на нулевой странице&lt;br /&gt;
| Адрес операнда складывается из байта, следующего за кодом команды и содержимого регистра X. Важно! Старший байт суммы отбрасывается!&lt;br /&gt;
| (ADDR, X)&lt;br /&gt;
| LDA ($3E, X)&lt;br /&gt;
| A1 3E&lt;br /&gt;
|-&lt;br /&gt;
| Indirect, y&lt;br /&gt;
| Косвенно-индексная&lt;br /&gt;
| Адрес операнда складывается из двух байт в нулевой странице по адресу, указанному вторым байтом команды, и регистра Y.&lt;br /&gt;
| (ADDR), Y&lt;br /&gt;
| LDA ($4C), Y&lt;br /&gt;
| B1 4C&lt;br /&gt;
|-&lt;br /&gt;
| Relative&lt;br /&gt;
| Относительная&lt;br /&gt;
| Используется в условных переходах. Второй байт команды (как число со знаком от −128 до +127) добавляется к счетчику команд при выполнении условия. Важно! При сложении используется адрес команды, следующей за командой условного перехода, а не адрес выполняемой команды!&lt;br /&gt;
|&lt;br /&gt;
| BEQ $A7&lt;br /&gt;
| F0 A7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Алфавитный список команд ==&lt;br /&gt;
Влияние на флаги:&lt;br /&gt;
* «*» — влияет;&lt;br /&gt;
* «-» — не влияет;&lt;br /&gt;
* «0» — устанавливает в 0;&lt;br /&gt;
* «1» — устанавливает в 1;&lt;br /&gt;
&lt;br /&gt;
Тайминги&lt;br /&gt;
* «*» означает, что время увеличивается на 1 такт, если код команды пересекает границу страницы;&lt;br /&gt;
* «+» означает время в случае перехода в пределах страницы;&lt;br /&gt;
* «++» означает время в случае перехода за пределы текущей страницы;&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ADC&lt;br /&gt;
| Операция = A + M + C -&amp;gt; A, C&lt;br /&gt;
| Описание = Сложение с переносом&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * * - - - - * *&lt;br /&gt;
|  IMM           |   ADC #Oper           |    69   |    2    |    2&lt;br /&gt;
|  ZP            |   ADC Oper            |    65   |    2    |    3&lt;br /&gt;
|  ZP, X         |   ADC Oper,X          |    75   |    2    |    4&lt;br /&gt;
|  ABS           |   ADC Oper            |    6D   |    3    |    4&lt;br /&gt;
|  ABS, X        |   ADC Oper,X          |    7D   |    3    |    4*&lt;br /&gt;
|  ABS, Y        |   ADC Oper,Y          |    79   |    3    |    4*&lt;br /&gt;
|  IND, X        |   ADC (Oper,X)        |    61   |    2    |    6&lt;br /&gt;
|  IND, Y        |   ADC (Oper),Y        |    71   |    2    |    5*&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = AND&lt;br /&gt;
| Операция = A and M -&amp;gt; A&lt;br /&gt;
| Описание = Логическое AND&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMM           |   AND #Oper           |    29   |    2    |    2&lt;br /&gt;
|  ZP            |   AND Oper            |    25   |    2    |    3&lt;br /&gt;
|  ZP, X         |   AND Oper,X          |    35   |    2    |    4&lt;br /&gt;
|  ABS           |   AND Oper            |    2D   |    3    |    4&lt;br /&gt;
|  ABS, X        |   AND Oper,X          |    3D   |    3    |    4*&lt;br /&gt;
|  ABS, Y        |   AND Oper,Y          |    39   |    3    |    4*&lt;br /&gt;
|  IND, X        |   AND (Oper,X)        |    21   |    2    |    6&lt;br /&gt;
|  IND, Y        |   AND (Oper),Y        |    31   |    2    |    5&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ASL&lt;br /&gt;
| Операция = C &amp;lt;- [A или M] &amp;lt;- 0&lt;br /&gt;
| Описание = Арифметический сдвиг влево&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  ACC           |   ASL A               |    0A   |    1    |    2&lt;br /&gt;
|  ZP            |   ASL Oper            |    06   |    2    |    5&lt;br /&gt;
|  ZP, X         |   ASL Oper,X          |    16   |    2    |    6&lt;br /&gt;
|  ABS           |   ASL Oper            |    0E   |    3    |    6&lt;br /&gt;
|  ABS, X        |   ASL Oper,X          |    1E   |    3    |    7&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BCC&lt;br /&gt;
| Операция = Branch on Carry Clear&lt;br /&gt;
| Описание = Условный переход, если нет переноса&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  REL           |   BCC Oper            |    90   |    2    |    2&amp;lt;br&amp;gt;3+&amp;lt;br&amp;gt;4++&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BCS&lt;br /&gt;
| Операция = Branch on Carry Set&lt;br /&gt;
| Описание = Условный переход, если перенос&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  REL           |   BCS Oper            |    B0   |    2    |    2&amp;lt;br&amp;gt;3+&amp;lt;br&amp;gt;4++&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BEQ&lt;br /&gt;
| Операция = Branch on Equal&lt;br /&gt;
| Описание = Условный переход, если равно (Z=1)&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  REL           |   BEQ Oper            |    F0   |    2    |    2&amp;lt;br&amp;gt;3+&amp;lt;br&amp;gt;4++&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BIT&lt;br /&gt;
| Операция = (A and M) == 0 -&amp;gt; Z, M7 -&amp;gt; N, M6 -&amp;gt; V&lt;br /&gt;
| Описание = Проверка битов&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * * - - - - * -&lt;br /&gt;
|  ZP            |   BIT Oper            |    24   |    2    |    3&lt;br /&gt;
|  ABS           |   BIT Oper            |    2C   |    3    |    4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BMI&lt;br /&gt;
| Операция = Branch on Minus&lt;br /&gt;
| Описание = Условный переход, если отрицательно (S=1)&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  REL           |   BMI Oper            |    30   |    2    |    2&amp;lt;br&amp;gt;3+&amp;lt;br&amp;gt;4++&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BNE&lt;br /&gt;
| Операция = Branch on Not Equal&lt;br /&gt;
| Описание = Условный переход, если не равно (Z=0)&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  REL           |   BNE Oper            |    D0   |    2    |    2&amp;lt;br&amp;gt;3+&amp;lt;br&amp;gt;4++&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BPL&lt;br /&gt;
| Операция = Branch on Plus&lt;br /&gt;
| Описание = Условный переход, если положительно (S=0)&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  REL           |   BPL Oper            |    10   |    2    |    2&amp;lt;br&amp;gt;3+&amp;lt;br&amp;gt;4++&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BRK&lt;br /&gt;
| Операция = PC+2 -&amp;gt; (S+1200), P -&amp;gt; (S-2), S-3 -&amp;gt; S, ($FFFE) -&amp;gt; PC&lt;br /&gt;
| Описание = Программное прерывание&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - 1 - 1 - -&lt;br /&gt;
|  IMP           |   BRK                 |    00   |    1    |    7&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BVC&lt;br /&gt;
| Операция = Branch on Overflow Clear&lt;br /&gt;
| Описание = Условный переход, если нет переполнения (V=0)&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  REL           |   BVC Oper            |   50   |    2    |    2&amp;lt;br&amp;gt;3+&amp;lt;br&amp;gt;4++&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = BVS&lt;br /&gt;
| Операция = Branch on Overflow Set&lt;br /&gt;
| Описание = Условный переход, если переполнение (V=1)&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  REL           |   BVS Oper            |   70   |    2    |    2&amp;lt;br&amp;gt;3+&amp;lt;br&amp;gt;4++&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = CLC&lt;br /&gt;
| Операция = 0 -&amp;gt; C&lt;br /&gt;
| Описание = Очистка флага переноса&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - 0&lt;br /&gt;
|  IMP           |   CLC                 |    18   |    1    |    2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = CLD&lt;br /&gt;
| Операция = 0 -&amp;gt; D&lt;br /&gt;
| Описание = Очистка флага BCD&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - 0 - - -&lt;br /&gt;
|  IMP           |   CLD                 |    D8   |    1    |    2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = CLI&lt;br /&gt;
| Операция = 0 -&amp;gt; I&lt;br /&gt;
| Описание = Очистка флага запрета прерываний&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - 0 - -&lt;br /&gt;
|  IMP           |   CLI                 |    58   |    1    |    2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = CLV&lt;br /&gt;
| Операция = 0 -&amp;gt; V&lt;br /&gt;
| Описание = Очистка флага переполнения&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - 0 - - - - - -&lt;br /&gt;
|  IMP           |   CLV                 |    B8   |    1    |    2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = CMP&lt;br /&gt;
| Операция = A – M&lt;br /&gt;
| Описание = Сравнение аккумулятора с памятью&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  IMM           |   CMP #Oper           |    C9   |    2    |    2 &lt;br /&gt;
|  ZP            |   CMP Oper            |    C5   |    2    |    3&lt;br /&gt;
|  ZP, X         |   CMP Oper,X          |    D5   |    2    |    4&lt;br /&gt;
|  ABS           |   CMP Oper            |    CD   |    3    |    4&lt;br /&gt;
|  ABS, X        |   CMP Oper,X          |    DD   |    3    |    4*&lt;br /&gt;
|  ABS, Y        |   CMP Oper,Y          |    D9   |    3    |    4*&lt;br /&gt;
|  IND, X        |   CMP (Oper,X)        |    C1   |    2    |    6&lt;br /&gt;
|  IND, Y        |   CMP (Oper),Y        |    D1   |    2    |    5*&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = CPX&lt;br /&gt;
| Операция = X – M&lt;br /&gt;
| Описание = Сравнение X с памятью&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  IMM           |   CPX *Oper           |    E0   |    2    |    2&lt;br /&gt;
|  ZP            |   CPX Oper            |    E4   |    2    |    3&lt;br /&gt;
|  ABS           |   CPX Oper            |    EC   |    3    |    4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = CPY&lt;br /&gt;
| Операция = Y – M&lt;br /&gt;
| Описание = Сравнение Y с памятью&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  IMM           |   CPY *Oper           |    C0   |    2    |    2 &lt;br /&gt;
|  ZP            |   CPY Oper            |    C4   |    2    |    3     &lt;br /&gt;
|  ABS           |   CPY Oper            |    CC   |    3    |    4     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = DEC&lt;br /&gt;
| Операция = M – 1 -&amp;gt; M&lt;br /&gt;
| Описание = Декремент памяти&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  ZP            |   DEC Oper            |    C6   |    2    |    5     &lt;br /&gt;
|  ZP, X         |   DEC Oper,X          |    D6   |    2    |    6     &lt;br /&gt;
|  ABS           |   DEC Oper            |    CE   |    3    |    6     &lt;br /&gt;
|  ABS, X        |   DEC Oper,X          |    DE   |    3    |    7     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = DEX&lt;br /&gt;
| Операция = X – 1 -&amp;gt; X&lt;br /&gt;
| Описание = Декремент X&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMP           |   DEX                 |    CA   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = DEY&lt;br /&gt;
| Операция = Y – 1 -&amp;gt; Y&lt;br /&gt;
| Описание = Декремент Y&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMP           |   DEY                 |    88   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = EOR&lt;br /&gt;
| Операция = A xor M -&amp;gt; A&lt;br /&gt;
| Описание = Логическое XOR&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMM           |   EOR #Oper           |    49   |    2    |    2     &lt;br /&gt;
|  ZP            |   EOR Oper            |    45   |    2    |    3     &lt;br /&gt;
|  ZP, X         |   EOR Oper,X          |    55   |    2    |    4     &lt;br /&gt;
|  ABS           |   EOR Oper            |    40   |    3    |    4     &lt;br /&gt;
|  ABS, X        |   EOR Oper,X          |    5D   |    3    |    4*    &lt;br /&gt;
|  ABS, Y        |   EOR Oper,Y          |    59   |    3    |    4*    &lt;br /&gt;
|  IND, X        |   EOR (Oper,X)        |    41   |    2    |    6     &lt;br /&gt;
|  IND, Y        |   EOR (Oper),Y        |    51   |    2    |    5*    &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = INC&lt;br /&gt;
| Операция = M + 1 -&amp;gt; M&lt;br /&gt;
| Описание = Инкремент памяти&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  ZP            |   INC Oper            |    E6   |    2    |    5     &lt;br /&gt;
|  ZP, X         |   INC Oper,X          |    F6   |    2    |    6     &lt;br /&gt;
|  ABS           |   INC Oper            |    EE   |    3    |    6     &lt;br /&gt;
|  ABS, X        |   INC Oper,X          |    FE   |    3    |    7     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = INX&lt;br /&gt;
| Операция = X + 1 -&amp;gt; X&lt;br /&gt;
| Описание = Инкремент X&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMP           |   INX                 |    E8   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = INY&lt;br /&gt;
| Операция = Y + 1 -&amp;gt; Y&lt;br /&gt;
| Описание = Инкремент Y&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMP           |   INY                 |    C8   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = JMP&lt;br /&gt;
| Операция = (PC+1) -&amp;gt; PC или ((PC+1)) -&amp;gt; PC&lt;br /&gt;
| Описание = Безусловный переход&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  ABS           |   JMP Oper            |    4C   |    3    |    3     &lt;br /&gt;
|  IND           |   JMP (Oper)          |    6C   |    3    |    5     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = JSR&lt;br /&gt;
| Операция = PC+2 -&amp;gt; (S+3000), S - 2 -&amp;gt; S, (PC+1) -&amp;gt; PC&lt;br /&gt;
| Описание = Вызов подпрограммы&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  ABS           |   JSR Oper            |    20   |    3    |    6     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = LDA&lt;br /&gt;
| Операция = M -&amp;gt; A&lt;br /&gt;
| Описание = Загрузка аккумулятора&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMM           |   LDA #Oper           |    A9   |    2    |    2     &lt;br /&gt;
|  ZP            |   LDA Oper            |    A5   |    2    |    3     &lt;br /&gt;
|  ZP, X         |   LDA Oper,X          |    B5   |    2    |    4     &lt;br /&gt;
|  ABS           |   LDA Oper            |    AD   |    3    |    4     &lt;br /&gt;
|  ABS, X        |   LDA Oper,X          |    BD   |    3    |    4*    &lt;br /&gt;
|  ABS, Y        |   LDA Oper,Y          |    B9   |    3    |    4*    &lt;br /&gt;
|  IND, X        |   LDA (Oper,X)        |    A1   |    2    |    6     &lt;br /&gt;
|  IND, Y        |   LDA (Oper),Y        |    B1   |    2    |    5*    &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = LDX&lt;br /&gt;
| Операция = M -&amp;gt; X&lt;br /&gt;
| Описание = Загрузка X&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMM           |   LDX #Oper           |    A2   |    2    |    2     &lt;br /&gt;
|  ZP            |   LDX Oper            |    A6   |    2    |    3     &lt;br /&gt;
|  ZP, Y         |   LDX Oper,Y          |    B6   |    2    |    4     &lt;br /&gt;
|  ABS           |   LDX Oper            |    AE   |    3    |    4     &lt;br /&gt;
|  ABS, Y        |   LDX Oper,Y          |    BE   |    3    |    4*    &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = LDY&lt;br /&gt;
| Операция = M -&amp;gt; Y&lt;br /&gt;
| Описание = Загрузка Y&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMM           |   LDY #Oper           |    A0   |    2    |    2     &lt;br /&gt;
|  ZP            |   LDY Oper            |    A4   |    2    |    3     &lt;br /&gt;
|  ZP, X         |   LDY Oper,X          |    B4   |    2    |    4     &lt;br /&gt;
|  ABS           |   LDY Oper            |    AC   |    3    |    4    &lt;br /&gt;
|  ABS, X        |   LDY Oper,X          |    BC   |    3    |    4*    &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = LSR&lt;br /&gt;
| Операция = 0 -&amp;gt; [A или M] -&amp;gt; С&lt;br /&gt;
| Описание = Логический сдвиг вправо&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = 0 - - - - - * *&lt;br /&gt;
|  ACC           |   LSR A               |    4A   |    1    |    2     &lt;br /&gt;
|  ZP            |   LSR Oper            |    46   |    2    |    5     &lt;br /&gt;
|  ZP, X         |   LSR Oper,X          |    56   |    2    |    6     &lt;br /&gt;
|  ABS           |   LSR Oper            |    4E   |    3    |    6     &lt;br /&gt;
|  ABS, X        |   LSR Oper,X          |    5E   |    3    |    7     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = NOP&lt;br /&gt;
| Операция = No operation&lt;br /&gt;
| Описание = Пустая операция&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  IMP           |   NOP                 |    EA   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ORA&lt;br /&gt;
| Операция = A or M -&amp;gt; A&lt;br /&gt;
| Описание = Логическое OR&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMM           |   ORA #Oper           |    09   |    2    |    2     &lt;br /&gt;
|  ZP            |   ORA Oper            |    05   |    2    |    3     &lt;br /&gt;
|  ZP, X         |   ORA Oper,X          |    15   |    2    |    4     &lt;br /&gt;
|  ABS           |   ORA Oper            |    0D   |    3    |    4     &lt;br /&gt;
|  ABS, X        |   ORA Oper,X          |    10   |    3    |    4*    &lt;br /&gt;
|  ABS, Y        |   ORA Oper,Y          |    19   |    3    |    4*    &lt;br /&gt;
|  IND, X        |   ORA (Oper,X)        |    01   |    2    |    6     &lt;br /&gt;
|  IND, Y        |   ORA (Oper),Y        |    11   |    2    |    5     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = PHA&lt;br /&gt;
| Операция = A -&amp;gt; (S + 3700), S - 1 -&amp;gt; S&lt;br /&gt;
| Описание = Поместить аккумулятор в стек&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  IMP           |   PHA                 |    48   |    1    |    3     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = PHP&lt;br /&gt;
| Операция = P -&amp;gt; (S + 3800), S - 1 -&amp;gt; S&lt;br /&gt;
| Описание = Поместить слово состояния в стек&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  IMP           |   PHP                 |    08   |    1    |    3     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = PLA&lt;br /&gt;
| Операция = S + 1 -&amp;gt; S, (S + 3900) -&amp;gt; A&lt;br /&gt;
| Описание = Загрузить аккумулятор из стека&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  IMP           |   PLA                 |    68   |    1    |    4     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = PLP&lt;br /&gt;
| Операция = S + 1 -&amp;gt; S, (S + 4000) -&amp;gt; P&lt;br /&gt;
| Описание = Загрузить слово состояния из стека&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * * - * * * * *&lt;br /&gt;
|  IMP           |   PLP                 |    28   |    1    |    4     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ROL&lt;br /&gt;
| Операция = &amp;lt;- [A или M] &amp;lt;- C &amp;lt;-&lt;br /&gt;
| Описание = Циклический сдвиг влево&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  ACC           |   ROL A               |    2A   |    1    |    2     &lt;br /&gt;
|  ZP            |   ROL Oper            |    26   |    2    |    5     &lt;br /&gt;
|  ZP, X         |   ROL Oper,X          |    36   |    2    |    6     &lt;br /&gt;
|  ABS           |   ROL Oper            |    2E   |    3    |    6     &lt;br /&gt;
|  ABS, X        |   ROL Oper,X          |    3E   |    3    |    7     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ROR&lt;br /&gt;
| Операция = -&amp;gt; C -&amp;gt; [A или M] -&amp;gt;&lt;br /&gt;
| Описание = Циклический сдвиг вправо&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  ACC           |   ROR A               |    6A   |    1    |    2     &lt;br /&gt;
|  ZP            |   ROR Oper            |    66   |    2    |    5     &lt;br /&gt;
|  ZP, X         |   ROR Oper,X          |    76   |    2    |    6     &lt;br /&gt;
|  ABS           |   ROR Oper            |    6E   |    3    |    6     &lt;br /&gt;
|  ABS, X        |   ROR Oper,X          |    7E   |    3    |    7     &lt;br /&gt;
| Примечание = Инструкция ROR доступна в микропроцессорах MCS650X с июня 1976 г.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = RTI&lt;br /&gt;
| Операция = (4300 + S + 1) -&amp;gt; P, (4300 + S + 2) -&amp;gt; PC, S + 3 -&amp;gt; S&lt;br /&gt;
| Описание = Возврат из прерывания&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * * - * * * * *&lt;br /&gt;
|  IMP           |   RTI                 |    40   |    1    |    6     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = RTS&lt;br /&gt;
| Операция = (4400 + S + 1) -&amp;gt; PС, S + 2 -&amp;gt; S&lt;br /&gt;
| Описание = Возврат из подпрограммы&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  IMP           |   RTS                 |    60   |    1    |    6          &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SBC&lt;br /&gt;
| Операция = A - M - C -&amp;gt; A, C&lt;br /&gt;
| Описание = Вычитание с займом&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * * - - - - * *&lt;br /&gt;
|  IMM           |   SBC #Oper           |    E9   |    2    |    2     &lt;br /&gt;
|  ZP            |   SBC Oper            |    E5   |    2    |    3     &lt;br /&gt;
|  ZP, X         |   SBC Oper,X          |    F5   |    2    |    4     &lt;br /&gt;
|  ABS           |   SBC Oper            |    ED   |    3    |    4     &lt;br /&gt;
|  ABS, X        |   SBC Oper,X          |    FD   |    3    |    4*    &lt;br /&gt;
|  ABS, Y        |   SBC Oper,Y          |    F9   |    3    |    4*    &lt;br /&gt;
|  IND, X        |   SBC (Oper,X)        |    E1   |    2    |    6     &lt;br /&gt;
|  IND, Y        |   SBC (Oper),Y        |    F1   |    2    |    5     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SEC&lt;br /&gt;
| Операция = 1 -&amp;gt; C&lt;br /&gt;
| Описание = Установка флага переноса&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - 1&lt;br /&gt;
|  IMP           |   SEC                 |    38   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SED&lt;br /&gt;
| Операция = 1 -&amp;gt; D&lt;br /&gt;
| Описание = Установка флага BCD&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - 1 - - -&lt;br /&gt;
|  IMP           |   SED                 |    F8   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SEI&lt;br /&gt;
| Операция = 1 -&amp;gt; I&lt;br /&gt;
| Описание = Установка флага запрета прерываний&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - 1 - - -&lt;br /&gt;
|  IMP           |   SEI                 |    78   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = STA&lt;br /&gt;
| Операция = A -&amp;gt; M&lt;br /&gt;
| Описание = Сохранить аккумулятор в памяти&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  ZP            |   STA Oper            |    85   |    2    |    3     &lt;br /&gt;
|  ZP, X         |   STA Oper,X          |    95   |    2    |    4     &lt;br /&gt;
|  ABS           |   STA Oper            |    8D   |    3    |    4     &lt;br /&gt;
|  ABS, X        |   STA Oper,X          |    9D   |    3    |    5     &lt;br /&gt;
|  ABS, Y        |   STA Oper, Y         |    99   |    3    |    5     &lt;br /&gt;
|  IND, X        |   STA (Oper,X)        |    81   |    2    |    6     &lt;br /&gt;
|  IND, Y        |   STA (Oper),Y        |    91   |    2    |    6     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = STX&lt;br /&gt;
| Операция = X -&amp;gt; M&lt;br /&gt;
| Описание = Сохранить X в памяти&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  ZP            |   STX Oper            |    86   |    2    |    3     &lt;br /&gt;
|  ZP, Y         |   STX Oper,Y          |    96   |    2    |    4     &lt;br /&gt;
|  ABS           |   STX Oper            |    8E   |    3    |    4     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = STY&lt;br /&gt;
| Операция = Y -&amp;gt; M&lt;br /&gt;
| Описание = Сохранить Y в памяти&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  ZP            |   STY Oper            |    84   |    2    |    3     &lt;br /&gt;
|  ZP, X         |   STY Oper,X          |    94   |    2    |    4     &lt;br /&gt;
|  ABS           |   STY Oper            |    8C   |    3    |    4     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = TAX&lt;br /&gt;
| Операция = A -&amp;gt; X&lt;br /&gt;
| Описание = Передать A в X&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMP           |   TAX                 |    AA   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = TAY&lt;br /&gt;
| Операция = A -&amp;gt; Y&lt;br /&gt;
| Описание = Передать A в X&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMP           |   TAY                 |    A8   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = TSX&lt;br /&gt;
| Операция = S -&amp;gt; X&lt;br /&gt;
| Описание = Передать S в X&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMP           |   TSX                 |    BA   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = TXA&lt;br /&gt;
| Операция = X -&amp;gt; A&lt;br /&gt;
| Описание = Передать X в A&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMP           |   TXA                 |    8A   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = TXS&lt;br /&gt;
| Операция = X -&amp;gt; S&lt;br /&gt;
| Описание = Передать X в S&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  IMP           |   TXS                 |    9A   |    1    |    2     &lt;br /&gt;
| Примечание = В отличие от других операций загрузки, не влияет на флаг N&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = TYA&lt;br /&gt;
| Операция = Y -&amp;gt; A&lt;br /&gt;
| Описание = Передать Y в A&lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMP           |   TYA                 |    98   |    1    |    2     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Особенности ==&lt;br /&gt;
=== Пересечение границ страниц в разных режимах адресации ===&lt;br /&gt;
В режиме адресации к нулевой странице верхний байт вычисленного адреса всегда обнуляется, поэтому последовательность&lt;br /&gt;
&lt;br /&gt;
 LDX #1&lt;br /&gt;
 LDA $FF,X&lt;br /&gt;
&lt;br /&gt;
Загрузит значение из адреса 0000H, а не 0100H, как можно было бы ожидать.&lt;br /&gt;
&lt;br /&gt;
При косвенной (Indirect) адресации двухбайтовый адрес не может быть извлечен через границу страницы, поэтому все варианты&lt;br /&gt;
&lt;br /&gt;
 LDA ($FF),Y&lt;br /&gt;
&lt;br /&gt;
 LDX #$00&lt;br /&gt;
 LDA ($FF,X)&lt;br /&gt;
 &lt;br /&gt;
 LDX #$FF&lt;br /&gt;
 LDA ($00,X)&lt;br /&gt;
Извлекут младший байт из адреса 00FFH, а младший из 0000H.&lt;br /&gt;
&lt;br /&gt;
 JMP (92FF)&lt;br /&gt;
&lt;br /&gt;
Получит младший байт из адреса 12FFH, а старший из 1200H.&lt;br /&gt;
&lt;br /&gt;
=== Внешняя установка флага V ===&lt;br /&gt;
В некоторых моделях процессоров есть внешний сигнал -SO, устанавливающий флаг V. Назначение такого сигнала — прерывание ожидания вызова от внешнего устройства в бесконечном цикле команды BVC ($50 $FE).&lt;br /&gt;
&lt;br /&gt;
=== Флаг B при совпадении BRK и NMI ===&lt;br /&gt;
В случае если в момент обработки BRK приходит аппаратное прерывание NMI, процессор переходит по адресу ($FFFA) вместо ($FFFE), а в стек попадает значение P с установленным флагом B.&lt;br /&gt;
&lt;br /&gt;
=== Работа команд ADC, SBC и ARR в режиме BCD ===&lt;br /&gt;
В режиме BCD данные команды работают с числами не двоичном режиме, а BCD-представлении. Фактически, из особенностей нужно упомянуть только влиянии этого режима на установку флагов N, Z и V.&lt;br /&gt;
&lt;br /&gt;
* Z устанавливается по значению, эквивалентному двоичной, а не BCD-операции.&lt;br /&gt;
Например, код&lt;br /&gt;
&lt;br /&gt;
 SED&lt;br /&gt;
 CLC&lt;br /&gt;
 LDA #$80&lt;br /&gt;
 ADC #$80&lt;br /&gt;
&lt;br /&gt;
Даст в результате A=$60, но при этом Z=1.&lt;br /&gt;
&lt;br /&gt;
* Флаги N и V устанавливаются после исправления нижнего полубайта, но до исправления верхнего.&lt;br /&gt;
&lt;br /&gt;
Общий алгоритм работы команды ADC в режиме BCD следующий:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
           беззнаковые&lt;br /&gt;
           A,  /* Аккумулятор */&lt;br /&gt;
           AL, /* нижняя половина аккумулятора */&lt;br /&gt;
           AH, /* верхняя половина аккумулятора */&lt;br /&gt;
&lt;br /&gt;
           C,  /* Флаг переноса */&lt;br /&gt;
           Z,  /* Флаг нуля */&lt;br /&gt;
           V,  /* Флаг переполнения */&lt;br /&gt;
           N,  /* Флаг знака */&lt;br /&gt;
&lt;br /&gt;
           s;  /* значение, прибавляемое к аккумулятору */&lt;br /&gt;
&lt;br /&gt;
        AL = (A &amp;amp; 15) + (s &amp;amp; 15) + C;         /* Вычисляем нижнюю половину. */&lt;br /&gt;
&lt;br /&gt;
        AH = (A &amp;gt;&amp;gt; 4) + (s &amp;gt;&amp;gt; 4) + (AL &amp;gt; 15); /* Вычисляем верхнюю половину. */&lt;br /&gt;
&lt;br /&gt;
        if (AL &amp;gt; 9) AL += 6;                  /* BCD-исправление нижней половины. */&lt;br /&gt;
&lt;br /&gt;
        Z = ((A + s + C) &amp;amp; 255 != 0);         /* Флаг нуля устанавливается&lt;br /&gt;
                                                 Как обычно. */&lt;br /&gt;
&lt;br /&gt;
        /* Флаги знака и переполнения устанавливаются как обычно,&lt;br /&gt;
            но до исправления верхней половины */&lt;br /&gt;
&lt;br /&gt;
        N = (AH &amp;amp; 8 != 0);&lt;br /&gt;
        V = ((AH &amp;lt;&amp;lt; 4) ^ A) &amp;amp; 128 &amp;amp;&amp;amp; !((A ^ s) &amp;amp; 128);&lt;br /&gt;
&lt;br /&gt;
        if (AH &amp;gt; 9) AH += 6;                  /* BCD-исправление верхней половины. */&lt;br /&gt;
&lt;br /&gt;
        /* Перенос – единственный, кто устанавливается в самом конце. */&lt;br /&gt;
&lt;br /&gt;
        C = (AH &amp;gt; 15);&lt;br /&gt;
        A = ((AH &amp;lt;&amp;lt; 4) | (AL &amp;amp; 15)) &amp;amp; 255;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С SBC проще. На установку флагов после нее флаг D не влияет.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
           беззнаковые&lt;br /&gt;
           A,  /* Аккумулятор */&lt;br /&gt;
           AL, /* нижняя половина аккумулятора */&lt;br /&gt;
           AH, /* верхняя половина аккумулятора */&lt;br /&gt;
&lt;br /&gt;
           C,  /* Флаг переноса */&lt;br /&gt;
           Z,  /* Флаг нуля */&lt;br /&gt;
           V,  /* Флаг переполнения */&lt;br /&gt;
           N,  /* Флаг знака */&lt;br /&gt;
&lt;br /&gt;
           s;  /* значение, вычитаемое из аккумулятора */&lt;br /&gt;
&lt;br /&gt;
        AL = (A &amp;amp; 15) - (s &amp;amp; 15) - !C;        /* Вычисляем нижнюю половину. */&lt;br /&gt;
&lt;br /&gt;
        if (AL &amp;amp; 16) AL -= 6;                 /* BCD-исправление нижней половины. */&lt;br /&gt;
&lt;br /&gt;
        AH = (A &amp;gt;&amp;gt; 4) - (s &amp;gt;&amp;gt; 4) - (AL &amp;amp; 16); /* Вычисляем верхнюю половину. */&lt;br /&gt;
&lt;br /&gt;
        if (AH &amp;amp; 16) AH -= 6;                 /* BCD-исправление верхней половины. */&lt;br /&gt;
&lt;br /&gt;
        /* Все флаги устанавливаем как обычно. */&lt;br /&gt;
&lt;br /&gt;
        C = (A - s - !C) &amp;amp; 256 != 0;&lt;br /&gt;
        Z = (A - s - !C) &amp;amp; 255 != 0;&lt;br /&gt;
        V = ((A - s - !C) ^ s) &amp;amp; 128 &amp;amp;&amp;amp; (A ^ s) &amp;amp; 128;&lt;br /&gt;
        N = (A - s - !C) &amp;amp; 128 != 0;&lt;br /&gt;
&lt;br /&gt;
        A = ((AH &amp;lt;&amp;lt; 4) | (AL &amp;amp; 15)) &amp;amp; 255;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Другие особенности ===&lt;br /&gt;
* Процессор всегда прочитывает второй байт команды условного перехода. Если происходи переход с пересечением границы страницы, то процессор сначала читает байт из текущей страницы, и только потом из нужной.&lt;br /&gt;
* Если граница страницы пересекается в других режимах адресации, процессор всегда сначала читает ошибочный байт со страницы, на 1 меньшую, чем нужная.&lt;br /&gt;
* Команды вида «Прочитать-Изменить-Записать» выполняют две операции записи — сначала неизмененное значение, затем измененное (то есть INC физически выполняется как LDX loc; STX loc; INX; STX loc).&lt;br /&gt;
* В цикле записи сигнал -RDY игнорируется, поэтому перед выполнением DMA его нужно держать не менее 3 циклов подряд, так как это максимально возможное подряд число циклов записи, вызываемое переходом на обработчик прерывания).&lt;br /&gt;
* При отработке сигнала -RESET значения в регистрах, за исключением PC, остаются неизменными.&lt;br /&gt;
* Процессор всегда прочитывает байт, следующий за кодом команды. Так как многие команды двух-трехбайтовые, это достаточно эффективно.&lt;br /&gt;
* Если команда в своем последнем цикле не сохраняет результат в память, то процессор в этот момент читает код следующей команды. Поэтому для таких команд в таблицах обычно указывается время исполнения, на 1 меньше реального.&lt;br /&gt;
&lt;br /&gt;
=== Обработка прерываний ===&lt;br /&gt;
Обработка NMI и IRQ занимает 7 циклов, их обработка в целом похода на команду BRK. IRQ и BRK устанавливают флаг I, в то время как NMI — нет.&lt;br /&gt;
&lt;br /&gt;
Перед обработкой прерывания процессор ожидает завершения выполнения текущей команды. Чтобы прерывание было обработано до следующей команды, оно должно быть получено не позднее последнего цикла текущей команды. Исключение есть только для команды BRK. Если прерывание приходит до 4-го цикла (сохранение флагов), то команда игнорируется и происходит переход на обработчик аппаратного прерывания. Обычно это не вызывает проблем, так как в случае совпадения BRK и IRQ все равно устанавливается флаг B, обработчик считает, что выполняется BRK, а IRQ срабатывает по возвращении из обработки BRK. С другой стороны, совпадение BRK и NMI более фатально. Если флаг B не проверяется в обработчике NMI, и перед возвращением адрес возврата не уменьшается на 2, то команда BRK будет потеряна.&lt;br /&gt;
&lt;br /&gt;
При совпадении IRQ и NMI, процессор, теоретически, должен перейти на обработку NMI, а потом сразу на IRQ, хотя это и не проверено на практике.&lt;br /&gt;
&lt;br /&gt;
Обработка RESET занимает 6 циклов с момента снятия сигнала. Все регистры сохраняются, кроме PC.&lt;br /&gt;
&lt;br /&gt;
=== Отличия NMOS и CMOS вариантов ===&lt;br /&gt;
* Индексная адресация при пересечении границы страницы:&lt;br /&gt;
** NMOS: Дополнительное чтение по неправильному адресу;&lt;br /&gt;
** CMOS: Дополнительное чтение последнего байта инструкции;&lt;br /&gt;
* Выполнение команд с недопустимыми кодами:&lt;br /&gt;
** NMOS: Вешают процессор до выполнения принудительного сброса;&lt;br /&gt;
** CMOS: Исполняются как NOP (Резерв на будущее)&lt;br /&gt;
* Переход по косвенному адресу, когда операнд пересекает границу страницы (xxFFH):&lt;br /&gt;
** NMOS: Второй байт берется из первого байта текущей страницы;&lt;br /&gt;
** CMOS: Второй байт берется со следующей страницы, ко времени исполнения добавляется 1 такт.&lt;br /&gt;
* Команды вида «Прочитать-Изменить-Записать»&lt;br /&gt;
** NMOS: Одна лишняя запись (см. выше);&lt;br /&gt;
** CMOS: Одно лишнее чтение.&lt;br /&gt;
* Флаг D&lt;br /&gt;
** NMOS: После сброса не определен;&lt;br /&gt;
** CMOS: Сбрасывается в 0 после аппаратного сброса или прерывания.&lt;br /&gt;
* Флаги в режиме BCD&lt;br /&gt;
** NMOS: Значения некорректны (см. выше);&lt;br /&gt;
** CMOS: Значения правильные, но добавляется 1 цикл.&lt;br /&gt;
* Прерывания в момент выборки команды BRK:&lt;br /&gt;
** NMOS: Происходит переход по вектору прерывания, а не BRK;&lt;br /&gt;
** CMOS: Сначала исполняется команда BRK, потом срабатывает прерывание.&lt;br /&gt;
&lt;br /&gt;
== Недокументированные команды ==&lt;br /&gt;
&lt;br /&gt;
Многие недокументированные команды реально не выполняют операцию AND между регистрами. Это происходит автоматически, когда два значения помещаются одновременно на внутреннюю шину с открытыми коллекторами.&lt;br /&gt;
&lt;br /&gt;
=== NOP ===&lt;br /&gt;
Команда NOP, помимо кода 90, может выполняться с другими методами адресации. В этом случае она эквивалентна команде LDA, за исключением того, что она не сохраняет результат и не влияет на флаги.&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ANE&lt;br /&gt;
| Операция = Вар. 1: A = ((A and #581 and X) or ( #$EE and X)) and #byte; Вар. 2: X and #byte -&amp;gt; A&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMM           |   ANE #byte             |    8B   |    2    |    ?     &lt;br /&gt;
| Примечание = В реальности параметр #581 может принимать значения #580, #58 или #$00, что зависит от значения, оставленного на шине видеоконтроллером после прерывания команды в режиме DMA.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ANC&lt;br /&gt;
| Операция = Вар. 1: A and #byte -&amp;gt; A, ASL A; Вар. 2: предыдущее без ASL&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  IMM            |   ANC #Oper            |    0B   |    2    |    ?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ANC?&lt;br /&gt;
| Операция = Вар. 1: A and #byte -&amp;gt; A, ROL A; Вар. 2: предыдущее без ROL&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  IMM            |   ANC #Oper            |    2B   |    2    |    ?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ARR (ADC + ROR)&lt;br /&gt;
| Операция = D=0: A and #byte -&amp;gt; A, ROR, A7-&amp;gt;S, A6-&amp;gt;V, (A==0)-&amp;gt;Z, A6 xor A5 -&amp;gt; C&amp;lt;br&amp;gt;&lt;br /&gt;
D=1: см. код ниже&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * * - - - - * *&lt;br /&gt;
|  IMM           |   ARR #byte             |    6B   |    2?    |    ?     &lt;br /&gt;
| Примечание = Алгоритм для BCD-режима:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
           A,  /* Аккумулятор */&lt;br /&gt;
           AL, /* нижняя половина аккумулятора */&lt;br /&gt;
           AH, /* верхняя половина аккумулятора */&lt;br /&gt;
&lt;br /&gt;
           C,  /* Флаг переноса */&lt;br /&gt;
           Z,  /* Флаг нуля */&lt;br /&gt;
           V,  /* Флаг переполнения */&lt;br /&gt;
           N,  /* Флаг знака */&lt;br /&gt;
&lt;br /&gt;
           t,  /* вспомогательная переменная */&lt;br /&gt;
           s;  /* байт-параметр команды */&lt;br /&gt;
&lt;br /&gt;
        t = A &amp;amp; s;                      /* Выполняем AND. */&lt;br /&gt;
&lt;br /&gt;
        AH = t &amp;gt;&amp;gt; 4;                    /* Делим результат */&lt;br /&gt;
        AL = t &amp;amp; 15;                    /* на части. */&lt;br /&gt;
&lt;br /&gt;
        N = C;                          /* Флаг знака */&lt;br /&gt;
        Z = !(A = (t &amp;gt;&amp;gt; 1) | (C &amp;lt;&amp;lt; 7)); /* Z как обычно */&lt;br /&gt;
        V = (t ^ A) &amp;amp; 64;               /* a V магически. */&lt;br /&gt;
&lt;br /&gt;
        if (AL + (AL &amp;amp; 1) &amp;gt; 5)          /* «заплатка» BCD для нижней половины. */&lt;br /&gt;
          A = (A &amp;amp; 0xF0) | ((A + 6) &amp;amp; 0xF);&lt;br /&gt;
&lt;br /&gt;
        if (C = AH + (AH &amp;amp; 1) &amp;gt; 5)      /* Перенос. */&lt;br /&gt;
          A = (A + 0x60) &amp;amp; 0xFF;        /* «заплатка» BCD для верхней половины. */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ASR&lt;br /&gt;
| Операция = A and #byte -&amp;gt; A, LSR A&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  IMM            |   ASR #Oper            |    4B   |    2    |    ?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = DCP (DEC + CMP)&lt;br /&gt;
| Операция = M + 1 -&amp;gt; M, A – M&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  ZP            |   DCP Oper            |    C7   |    2    |    ?     &lt;br /&gt;
|  ZP, X         |   DCP Oper,X          |    D7   |    2    |    ?     &lt;br /&gt;
|  ABS           |   DCP Oper            |    CF   |    3    |    ?     &lt;br /&gt;
|  ABS, X        |   DCP Oper,X          |    DF   |    3    |    ?     &lt;br /&gt;
|  ABS, Y        |   DCP Oper, Y         |    DB   |    3    |    ?     &lt;br /&gt;
|  IND, X        |   DCP (Oper,X)        |    C3   |    2    |    ?     &lt;br /&gt;
|  IND, Y        |   DCP (Oper),Y        |    D3   |    2    |    ?     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = ISB (INC + SBC)&lt;br /&gt;
| Операция = M + 1 -&amp;gt; M, A – M -&amp;gt; A &lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * * - - - - * *&lt;br /&gt;
|  ZP            |   ISB Oper            |    E7   |    2    |    ?     &lt;br /&gt;
|  ZP, X         |   ISB Oper,X          |    F7   |    2    |    ?     &lt;br /&gt;
|  ABS           |   ISB Oper            |    EF   |    3    |    ?     &lt;br /&gt;
|  ABS, X        |   ISB Oper,X          |    FF   |    3    |    ?     &lt;br /&gt;
|  ABS, Y        |   ISB Oper, Y         |    FB   |    3    |    ?     &lt;br /&gt;
|  IND, X        |   ISB (Oper,X)        |    E3   |    2    |    ?     &lt;br /&gt;
|  IND, Y        |   ISB (Oper),Y        |    F3   |    2    |    ?     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = LAS&lt;br /&gt;
| Операция = M and S -&amp;gt; A, X, S&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  ABS, Y        |   LAS Oper, Y         |    BB   |    3    |    ?     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = LAX&lt;br /&gt;
| Операция = M -&amp;gt; A, X&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  ZP            |   LAX Oper            |    A7   |    2    |    ?     &lt;br /&gt;
|  ZP, Y!        |   LAX Oper,Y          |    B7   |    2    |    ?    &lt;br /&gt;
|  ABS           |   LAX Oper            |    AF   |    3    |    ?     &lt;br /&gt;
|  ABS, Y        |   LAX Oper,Y          |    BF   |    3    |    ?     &lt;br /&gt;
|  IND, X        |   LAX (Oper,Y)        |    A3   |    2    |    ?     &lt;br /&gt;
|  IND, Y        |   LAX (Oper),Y        |    B3   |    2    |    ?    &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = LXA&lt;br /&gt;
| Операция = Вар. 1: A = X = ANE; Вар. 2: A = X = (A &amp;amp; #byte); Вар. 3: A = X =  #byte;&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * -&lt;br /&gt;
|  IMM           |   LXA #byte             |    AB   |    2?    |    ?     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = RLA&lt;br /&gt;
| Операция = ROL M, A and M -&amp;gt; A&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  ZP            |   RLA Oper            |    27   |    2    |    ?     &lt;br /&gt;
|  ZP, X         |   RLA Oper,X          |    37   |    2    |    ?     &lt;br /&gt;
|  ABS           |   RLA Oper            |    2F   |    3    |    ?     &lt;br /&gt;
|  ABS, X        |   RLA Oper,X          |    3F   |    3    |    ?     &lt;br /&gt;
|  ABS, Y        |   RLA Oper, Y         |    3B   |    3    |    ?     &lt;br /&gt;
|  IND, X        |   RLA (Oper,X)        |    23   |    2    |    ?     &lt;br /&gt;
|  IND, Y        |   RLA (Oper),Y        |    33   |    2    |    ?     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = RRA&lt;br /&gt;
| Операция = ROR M, ADC(A, M) -&amp;gt; A&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * * - - - - * *&lt;br /&gt;
|  ZP            |   RRA Oper            |    67   |    2    |    ?     &lt;br /&gt;
|  ZP, X         |   RRA Oper,X          |    77   |    2    |    ?     &lt;br /&gt;
|  ABS           |   RRA Oper            |    6F   |    3    |    ?     &lt;br /&gt;
|  ABS, X        |   RRA Oper,X          |    7F   |    3    |    ?     &lt;br /&gt;
|  ABS, Y        |   RRA Oper, Y         |    7B   |    3    |    ?     &lt;br /&gt;
|  IND, X        |   RRA (Oper,X)        |    63   |    2    |    ?     &lt;br /&gt;
|  IND, Y        |   RRA (Oper),Y        |    73   |    2    |    ?     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SAX&lt;br /&gt;
| Операция = A and X -&amp;gt; M&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  ZP            |   SAX Oper            |    87   |    2    |    ?     &lt;br /&gt;
|  ZP, Y!        |   SAX Oper,Y          |    97   |    2    |    ?     &lt;br /&gt;
|  ABS           |   SAX Oper            |    8F   |    3    |    ?     &lt;br /&gt;
|  IND, X        |   SAX (Oper,X)        |    83   |    2    |    ?     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SBX (CMP + DEX)&lt;br /&gt;
| Операция = (A and X) - #byte -&amp;gt; X&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  IMM           |   SBX #byte             |    CB   |    2    |    ?     &lt;br /&gt;
| Примечание = От CMP осталось вычитание, от DEX – сохранение результата в X. AND берется из одновременного подключения A и X к АЛУ.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SHA&lt;br /&gt;
| Операция = A &amp;amp; X &amp;amp; (ADDR_HI + 1)) -&amp;gt; M&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  IND, Y        |   SHA (Oper),Y        |    93   |    2    |    ?&lt;br /&gt;
|  ABS, Y        |   SHA Oper,Y          |    9F   |    3    |    ?&lt;br /&gt;
| Примечание = ADDR_HI, вероятно, старший байт адреса M?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SHS&lt;br /&gt;
| Операция = A and X -&amp;gt; S, S and ADDR_HI -&amp;gt; M&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  ABS, Y        |   SHS Oper,Y          |    9B   |    3    |    ?&lt;br /&gt;
| Примечание = ADDR_HI, вероятно, старший байт адреса M?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SHX&lt;br /&gt;
| Операция = Вар. 1: X and (ADDR_HI + 1) -&amp;gt; M; Вар. 2: X and ADDR_HI -&amp;gt; M&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  ABS, Y        |   SHX Oper,Y          |    9E   |    3    |    ?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SHY&lt;br /&gt;
| Операция = Вар. 1: Y &amp;amp; (ADDR_HI + 1) -&amp;gt; M; Вар. 2: Y and ADDR_HI -&amp;gt; M&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = - - - - - - - -&lt;br /&gt;
|  ABS, Y        |   SHY Oper,Y          |    9C   |    3    |    ?&lt;br /&gt;
| Примечание = По другому источнику, режим адресации ABS, X.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SLO (ASL + ORA)&lt;br /&gt;
| Операция = ASL M -&amp;gt; M, A or M -&amp;gt; A&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  ZP            |   SLO Oper            |    07   |    2    |    ?     &lt;br /&gt;
|  ZP, X         |   SLO Oper,X          |    17   |    2    |    ?     &lt;br /&gt;
|  ABS           |   SLO Oper            |    0F   |    3    |    ?     &lt;br /&gt;
|  ABS, X        |   SLO Oper,X          |    1F   |    3    |    ?     &lt;br /&gt;
|  ABS, Y        |   SLO Oper, Y         |    1B   |    3    |    ?     &lt;br /&gt;
|  IND, X        |   SLO (Oper,X)        |    03   |    2    |    ?     &lt;br /&gt;
|  IND, Y        |   SLO (Oper),Y        |    13   |    2    |    ?     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Команда&lt;br /&gt;
| Обозначение = SRE&lt;br /&gt;
| Операция = LSR M -&amp;gt; M, A xor M -&amp;gt; A&lt;br /&gt;
| Описание = &lt;br /&gt;
| Флаги            = N V 1 B D I Z C&lt;br /&gt;
| Изменение флагов = * - - - - - * *&lt;br /&gt;
|  ZP            |   SRE Oper            |    47   |    2    |    ?     &lt;br /&gt;
|  ZP, X         |   SRE Oper,X          |    57   |    2    |    ?     &lt;br /&gt;
|  ABS           |   SRE Oper            |    4F   |    3    |    ?     &lt;br /&gt;
|  ABS, X        |   SRE Oper,X          |    5F   |    3    |    ?     &lt;br /&gt;
|  ABS, Y        |   SRE Oper, Y         |    5B   |    3    |    ?     &lt;br /&gt;
|  IND, X        |   SRE (Oper,X)        |    43   |    2    |    ?     &lt;br /&gt;
|  IND, Y        |   SRE (Oper),Y        |    53   |    2    |    ?     &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Порядок декодирования команд ==&lt;br /&gt;
&lt;br /&gt;
Любую команду 6502 можно представить следующим образом:&lt;br /&gt;
&lt;br /&gt;
 XXXYYYZZ&lt;br /&gt;
 └┬┘└┬┘└┤&lt;br /&gt;
  │  │  └── Группа команд&lt;br /&gt;
  │  └───── Режим адресации&lt;br /&gt;
  └──────── Код команды&lt;br /&gt;
&lt;br /&gt;
Таким образом, для уменьшения сравнений можно использовать следующий алгоритм:&lt;br /&gt;
&lt;br /&gt;
 swith ZZ:&lt;br /&gt;
           case 0:&lt;br /&gt;
                  switch XXX:&lt;br /&gt;
                             case 0:&lt;br /&gt;
                                    //Команды 000yyy00&lt;br /&gt;
                                    Do_Command_0(yyy);&lt;br /&gt;
                             break;&lt;br /&gt;
                             case 1:&lt;br /&gt;
                                    //Команды 001yyy00&lt;br /&gt;
                                    Do_Command_1(yyy);&lt;br /&gt;
                             break;&lt;br /&gt;
                             // etc&lt;br /&gt;
                  end;&lt;br /&gt;
           case 1:&lt;br /&gt;
                  switch XXX:&lt;br /&gt;
                             case 0:&lt;br /&gt;
                                    //Команды 000yyy01&lt;br /&gt;
                                    Do_Command_2(yyy);&lt;br /&gt;
                             break;&lt;br /&gt;
                             case 1:&lt;br /&gt;
                                    //Команды 001yyy01&lt;br /&gt;
                                    Do_Command_3(yyy);&lt;br /&gt;
                             break;&lt;br /&gt;
                             // etc&lt;br /&gt;
                  end;&lt;br /&gt;
           break&lt;br /&gt;
 end;     &lt;br /&gt;
&lt;br /&gt;
Далее все команды сгруппированы по этому принципу.&lt;br /&gt;
* «*» отмечены недокументированные команды)&lt;br /&gt;
* HALT обозначает зависание процессора&lt;br /&gt;
* «*NOP mode» обозначает, что команда эквивалента «LDA mode», но результат не сохраняется и флаги не меняются.&lt;br /&gt;
&lt;br /&gt;
 ??? 000xxx00&lt;br /&gt;
        000   BRK&lt;br /&gt;
        001   *NOP zp&lt;br /&gt;
        010   PHP&lt;br /&gt;
        011   *NOP abs&lt;br /&gt;
        100   BPL&lt;br /&gt;
        101   *NOP zp,x&lt;br /&gt;
        110   CLC&lt;br /&gt;
        111   *NOP abs,x&lt;br /&gt;
 &lt;br /&gt;
 ??? 001xxx00&lt;br /&gt;
        000   JSR&lt;br /&gt;
        001   BIT zp&lt;br /&gt;
        010   PLP impl&lt;br /&gt;
        011   BIT abs&lt;br /&gt;
        100   BMI rel&lt;br /&gt;
        101   *NOP zp,x&lt;br /&gt;
        110   SEC impl&lt;br /&gt;
        111   *NOP abs,x&lt;br /&gt;
  &lt;br /&gt;
 ??? 010xxx00&lt;br /&gt;
        000   RTI&lt;br /&gt;
        001   *NOP zp&lt;br /&gt;
        010   PHA impl&lt;br /&gt;
        011   JMP abs&lt;br /&gt;
        100   BVC rel&lt;br /&gt;
        101   *NOP zp,x&lt;br /&gt;
        110   CLI impl&lt;br /&gt;
        111   *NOP abs,x&lt;br /&gt;
 &lt;br /&gt;
 ??? 011xxx00&lt;br /&gt;
        000   RTS&lt;br /&gt;
        001   *NOP zp&lt;br /&gt;
        010   PLA impl&lt;br /&gt;
        011   JMP (abs)&lt;br /&gt;
        100   BVS rel&lt;br /&gt;
        101   *NOP zp,x&lt;br /&gt;
        110   SEI impl&lt;br /&gt;
        111   *NOP abs,x&lt;br /&gt;
 &lt;br /&gt;
 ??? 100xxx00&lt;br /&gt;
        000   *NOP&lt;br /&gt;
        001   STY zp&lt;br /&gt;
        010   DEY impl&lt;br /&gt;
        011   STY abs&lt;br /&gt;
        100   BCC rel&lt;br /&gt;
        101   STY zp,x&lt;br /&gt;
        110   TYA impl&lt;br /&gt;
        111   *SHY abs,x&lt;br /&gt;
 &lt;br /&gt;
 ??? 101xxx00&lt;br /&gt;
        000   LDY&lt;br /&gt;
        001   LDY zp&lt;br /&gt;
        010   TAY impl&lt;br /&gt;
        011   LDY abs&lt;br /&gt;
        100   BCS rel&lt;br /&gt;
        101   LDY zp,x&lt;br /&gt;
        110   CLV impl&lt;br /&gt;
        111   LDY abs,x&lt;br /&gt;
 &lt;br /&gt;
 ??? 110xxx00&lt;br /&gt;
        000   CPY&lt;br /&gt;
        001   CPY zp&lt;br /&gt;
        010   INY impl&lt;br /&gt;
        011   CPY abs&lt;br /&gt;
        100   BNE rel&lt;br /&gt;
        101   *NOP zp,x&lt;br /&gt;
        110   CLD impl&lt;br /&gt;
        111   *NOP abs,x&lt;br /&gt;
 &lt;br /&gt;
 ??? 111xxx00&lt;br /&gt;
        000   CPX&lt;br /&gt;
        001   CPX zp&lt;br /&gt;
        010   INX impl&lt;br /&gt;
        011   CPX abs&lt;br /&gt;
        100   BEQ rel&lt;br /&gt;
        101   *NOP zp,x&lt;br /&gt;
        110   SED impl&lt;br /&gt;
        111   *NOP abs,x&lt;br /&gt;
 &lt;br /&gt;
 ORA 000xxx01&lt;br /&gt;
        000   ind,x&lt;br /&gt;
        001   zp&lt;br /&gt;
        010   immed&lt;br /&gt;
        011   abs&lt;br /&gt;
        100   ind,y&lt;br /&gt;
        101   zp,x&lt;br /&gt;
        110   abs,y&lt;br /&gt;
        111   abs,x&lt;br /&gt;
 &lt;br /&gt;
 AND 001xxx01&lt;br /&gt;
 EOR 010xxx01&lt;br /&gt;
 ADC 011xxx01&lt;br /&gt;
 STA 100xxx01&lt;br /&gt;
 LDA 101xxx01&lt;br /&gt;
 CMP 110xxx01&lt;br /&gt;
 SBC 111xxx01&lt;br /&gt;
 &lt;br /&gt;
 ASL 000xxx10&lt;br /&gt;
        000   *HALT&lt;br /&gt;
        001   zp&lt;br /&gt;
        010   accum&lt;br /&gt;
        011   abs&lt;br /&gt;
        100   *HALT&lt;br /&gt;
        101   zp,x&lt;br /&gt;
        110   *NOP&lt;br /&gt;
        111   abs,x&lt;br /&gt;
 &lt;br /&gt;
 ROL 001xxx10&lt;br /&gt;
        000   *HALT&lt;br /&gt;
        001   zp&lt;br /&gt;
        010   accum&lt;br /&gt;
        011   abs&lt;br /&gt;
        100   *HALT&lt;br /&gt;
        101   zp,x&lt;br /&gt;
        110   *NOP&lt;br /&gt;
        111   abs,x&lt;br /&gt;
 &lt;br /&gt;
 LSR 010xxx10&lt;br /&gt;
        000   *HALT&lt;br /&gt;
        001   zp&lt;br /&gt;
        010   accum&lt;br /&gt;
        011   abs&lt;br /&gt;
        100   *HALT&lt;br /&gt;
        101   zp,x&lt;br /&gt;
        110   *NOP&lt;br /&gt;
        111   abs,x&lt;br /&gt;
 &lt;br /&gt;
 ROR 011xxx10&lt;br /&gt;
        000   *HALT&lt;br /&gt;
        001   zp&lt;br /&gt;
        010   accum&lt;br /&gt;
        011   abs&lt;br /&gt;
        100   *HALT&lt;br /&gt;
        101   zp,x&lt;br /&gt;
        110   *NOP&lt;br /&gt;
        111   abs,x&lt;br /&gt;
 &lt;br /&gt;
 STX 100xxx10&lt;br /&gt;
        000   *NOP(HALT)&lt;br /&gt;
        001   zp&lt;br /&gt;
        010   TXA (accum)&lt;br /&gt;
        011   abs&lt;br /&gt;
        100   *HALT&lt;br /&gt;
        101   zp,y&lt;br /&gt;
        110   TXS&lt;br /&gt;
        111   *SHX**y)&lt;br /&gt;
 &lt;br /&gt;
 LDX 101xxx10&lt;br /&gt;
        000   imm&lt;br /&gt;
        001   zp&lt;br /&gt;
        010   TAX (accum)&lt;br /&gt;
        011   abs&lt;br /&gt;
        100   *HALT&lt;br /&gt;
        101   zp,y&lt;br /&gt;
        110   TSX&lt;br /&gt;
        111   *y)&lt;br /&gt;
 &lt;br /&gt;
 DEC 110xxx10&lt;br /&gt;
        000   *NOP(HALT)&lt;br /&gt;
        001   zp&lt;br /&gt;
        010   DEX (impl)&lt;br /&gt;
        011   abs&lt;br /&gt;
        100   *HALT&lt;br /&gt;
        101   zp,x&lt;br /&gt;
        110   *NOP&lt;br /&gt;
        111   abs,x&lt;br /&gt;
 &lt;br /&gt;
 INC 111xxx10&lt;br /&gt;
        000   *NOP(HALT)&lt;br /&gt;
        001   zp&lt;br /&gt;
        010   NOP (impl)&lt;br /&gt;
        011   abs&lt;br /&gt;
        100   *HALT&lt;br /&gt;
        101   zp,x&lt;br /&gt;
        110   *NOP&lt;br /&gt;
        111   abs,x&lt;br /&gt;
 &lt;br /&gt;
 *SLO 000xxx11&lt;br /&gt;
        000   *SLO ind,x&lt;br /&gt;
        001   *SLO zp&lt;br /&gt;
        010   *ANC imm&lt;br /&gt;
        011   *SLO abs&lt;br /&gt;
        100   *SLO ind,y&lt;br /&gt;
        101   *SLO zp,x&lt;br /&gt;
        110   *SLO abs,y&lt;br /&gt;
        111   *SLO abs,x&lt;br /&gt;
 &lt;br /&gt;
 *RLA 001xxx11&lt;br /&gt;
        000   *RLA ind,x&lt;br /&gt;
        001   *RLA zp&lt;br /&gt;
        010   *ANC imm&lt;br /&gt;
        011   *RLA abs&lt;br /&gt;
        100   *RLA ind,y&lt;br /&gt;
        101   *RLA zp,x&lt;br /&gt;
        110   *RLA abs,y&lt;br /&gt;
        111   *RLA abs,x&lt;br /&gt;
 &lt;br /&gt;
 *SRE 010xxx11&lt;br /&gt;
        000   *SRE ind,x&lt;br /&gt;
        001   *SRE zp&lt;br /&gt;
        010   *ASR imm&lt;br /&gt;
        011   *SRE abs&lt;br /&gt;
        100   *SRE ind,y&lt;br /&gt;
        101   *SRE zp,x&lt;br /&gt;
        110   *SRE abs,y&lt;br /&gt;
        111   *SRE abs,x&lt;br /&gt;
 &lt;br /&gt;
 *RRA 011xxx11&lt;br /&gt;
        000   *RRA ind,x&lt;br /&gt;
        001   *RRA zp&lt;br /&gt;
        010   *ARR imm&lt;br /&gt;
        011   *RRA abs&lt;br /&gt;
        100   *RRA ind,y&lt;br /&gt;
        101   *RRA zp,x&lt;br /&gt;
        110   *RRA abs,y&lt;br /&gt;
        111   *RRA abs,x&lt;br /&gt;
 &lt;br /&gt;
 *??? 100xxx11&lt;br /&gt;
         000   *SAX ind,x&lt;br /&gt;
         001   *SAX zp&lt;br /&gt;
         010   *ANE imm&lt;br /&gt;
         011   *SAX abs&lt;br /&gt;
         100   *SHA ind,y&lt;br /&gt;
         101   *SAX* y)&lt;br /&gt;
         110   *SHS abs,y&lt;br /&gt;
         111   *SHA**y)&lt;br /&gt;
 &lt;br /&gt;
 *??? 101xxx11&lt;br /&gt;
         000   *LAX ind,x&lt;br /&gt;
         001   *LAX zp&lt;br /&gt;
         010   *LXA imm&lt;br /&gt;
         011   *LAX abs&lt;br /&gt;
         100   *LAX ind,y&lt;br /&gt;
         101   *LAX* y)&lt;br /&gt;
         110   *LAS abs,y&lt;br /&gt;
         111   *LAX* y)&lt;br /&gt;
 &lt;br /&gt;
 *DCP 110xxx11&lt;br /&gt;
        000   *DCP ind,x&lt;br /&gt;
        001   *DCP zp&lt;br /&gt;
        010   *SBX imm&lt;br /&gt;
        011   *DCP abs&lt;br /&gt;
        100   *DCP ind,y&lt;br /&gt;
        101   *DCP zp,x&lt;br /&gt;
        110   *DCP abs,y&lt;br /&gt;
        111   *DCP abs,x&lt;br /&gt;
 &lt;br /&gt;
 *ISB 111xxx11&lt;br /&gt;
        000   *ISB ind,x&lt;br /&gt;
        001   *IBS zp&lt;br /&gt;
        010   *SBC imm&lt;br /&gt;
        011   *ISB abs&lt;br /&gt;
        100   *ISB ind,y&lt;br /&gt;
        101   *ISB zp,x&lt;br /&gt;
        110   *ISB abs,y&lt;br /&gt;
        111   *ISB abs,x&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
* http://www.oxyron.de/html/opcodes02.html&lt;br /&gt;
* http://www.emuverse.ru/downloads/datasheets/processors/6502/c64doc.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:MOS 6502]]&lt;/div&gt;</summary>
		<author><name>DmitTrix</name></author>
	</entry>
</feed>