Логические инструкции
------------------
Эти инструкции производят логические операции на битах. Результат может быть либо истинным (1) либо ложным (0)
Code
AND, ANDI Логическое "И"
OR, ORI Логическое "ИЛИ"
EOR, EORI Экстра "ИЛИ"
NOT Логическое "НЕ"
1)Логическое "И" AND
Производит логическую операцию "И" на операнде побитово.
Рассмотрим ближе эту операцию:
AND:
0 И 0 = 0x0 = 0
0 И 1 = 0x1 = 0
1 И 0 = 1x0 = 0
1 И 1 = 1x1 = 1
Сразу перейдем к примеру. Пусть дана инструкция: and.w #4, d0 (d0 = 0000000A). Разложим операнды на биты
и логически перемножим:
Code
0100 = $4
AND 1010 = $A
-------------------
0000 = $0
Возможны 2 случая:
1)Первый операнд -- effective address(<ea>), второй -- регистр данных;
2)Первый операнд -- регистр данныхб второй -- effective address(<ea>);
Синтаксис: AND <ea>,Dn
AND Dn,<ea>
Варианты адресования(<ea>): 1) Dn, (An), (An)+, -(An), x(An), x(An,xr.s), label.w, label.l,
x(PC), x(PC,xr.s), #x
2) (An), (An)+, -(An), x(An), x(An,xr.s), label.w, label.l
Тип данных: Byte, word, longword
Пример:
Code
Инструкция До После
-----------------------------------------------
|and.w d1, d2 | d1=00000055 | d1=00000055 |
| | d2=00000078 | d2=00000050 |
-----------------------------------------------
2)Логическое "И" ANDI
Производит логическую операцию "И" на операнде побитово. Работает также как и AND, только здесь в качестве
первого операнда всегда используется целое число.
Синтаксис: ANDI #<data>,<ea>
Варианты адресования(<ea>): Dn, (An), (An)+, -(An), x(An), x(An,xr.s), label.w, label.l, SR, CCR
Тип данных: Byte, word, longword
Пример:
Code
Инструкция До После
--------------------------------------------------
|andi.w #$55, d0 | d0=00000078 | d0=00000050 |
--------------------------------------------------
3)Логическое "ИЛИ" OR
Производит логическую операцию "ИЛИ" на операнде побитово.
Рассмотрим ближе эту операцию:
OR:
0 И 0 = 0+0 = 0
0 И 1 = 0+1 = 1
1 И 0 = 1+0 = 1
1 И 1 = 1+1 = 1
Пусть дана инструкция: or.w #4, d0 (d0 = 0000000A). Разложим операнды на биты
и логически сложим:
Code
0100 = $4
OR 1010 = $A
-------------------
1110 = $E
Возможны 2 случая:
1)Первый операнд -- effective address(<ea>), второй -- регистр данных;
2)Первый операнд -- регистр данныхб второй -- effective address(<ea>);
Синтаксис: OR <ea>,Dn
OR Dn,<ea>
Варианты адресования(<ea>): 1) Dn, (An), (An)+, -(An), x(An), x(An,xr.s), label.w, label.l,
x(PC), x(PC,xr.s), #x
2) (An), (An)+, -(An), x(An), x(An,xr.s), label.w, label.l
Тип данных: Byte, word, longword
Пример:
Code
Инструкция До После
-----------------------------------------------
|or.w d1, d2 | d1=00000055 | d1=00000055 |
| | d2=00000070 | d2=00000075 |
-----------------------------------------------
4)Логическое "ИЛИ" ORI
Производит логическую операцию "ИЛИ" на операнде побитово. Работает также как и OR, только здесь в качестве
первого операнда всегда используется целое число.
Синтаксис: ORI #<data>,<ea>
Варианты адресования(<ea>): Dn, (An), (An)+, -(An), x(An), x(An,xr.s), label.w, label.l, SR, CCR
Тип данных: Byte, word, longword
Пример:
Code
Инструкция До После
------------------------------------------------
|or.w #$55, d0 | d0=00000070 | d0=00000075 |
------------------------------------------------
5)Экстра "ИЛИ" EOR
Производит логическую операцию "ИЛИ" на операнде побитово. Отличается от простого OR тем, что в случае
логического сложения 1+1 получается не 1, а 0. Остальное то же самое.
EOR:
0 И 0 = 0+0 = 0
0 И 1 = 0+1 = 1
1 И 0 = 1+0 = 1
1 И 1 = 1+1 = 0
Пусть дана инструкция: eor.w #4, d0 (d0 = 0000000A). Разложим операнды на биты
и логически сложим:
Code
0100 = $4
EOR 1110 = $E
------------------
1010 = $A
Синтаксис: EOR Dn,<ea>
Варианты адресования(<ea>): Dn, (An), (An)+, -(An), x(An), x(An,xr.s), label.w, label.l
Тип данных: Byte, word, longword
Пример:
Code
Инструкция До После
-----------------------------------------------
|eor.w d1, d2 | d1=00000004 | d1=00000004 |
| | d2=0000000E | d2=0000000A |
-----------------------------------------------
6)Экстра "ИЛИ" EORI
Производит логическую операцию "ИЛИ" на операнде побитово. Работает также как и EOR, только здесь в качестве
первого операнда всегда используется целое число.
Синтаксис: EORI #<data>,<ea>
Варианты адресования(<ea>): Dn, (An), (An)+, -(An), x(An), x(An,xr.s), label.w, label.l, SR, CCR
Тип данных: Byte, word, longword
Пример:
Code
Инструкция До После
-------------------------------------------------
|eori.w #$4, d0 | d0=0000000E | d0=0000000A |
-------------------------------------------------
7)Логическое "НЕ" NOT
Производит логическую операцию "НЕ" на операнде побитово.
Рассмотрим ближе эту операцию:
NOT:
NOT 1 = 0
NOT 0 = 1
Пусть дана инструкция: not.w d0 (d0 = 0000000A). Рассмотрим ее работу на битах.
NOT 1010 = %0101 = $5
Синтаксис: NOT <ea>
Варианты адресования(<ea>): Dn, (An), (An)+, -(An), x(An), x(An,xr.s), label.w, label.l
Тип данных: Byte, word, longword
Пример:
Code
Инструкция До После
------------------------------------------
|not.w d0 | d0=0000000A | d0=00000005 |
------------------------------------------