Описание:
Заменяет содержимое регистра Rd его дополнением до двух. Значение $80 остается неизменным.
Операция:
(i) | Rd <-- $00 - Rd | ||
Синтаксис | Операнды: | Счетчик программ: | |
(i) | NEG Rd | 0 < d < 31 | PC <- PC + 1 |
16-разрядный код операции:
1001 | 010d | dddd | 0001 |
Булевы выражения регистра статуса (SREG)
|
||||||||
|
H: | R3*Rd3 Устанавливается если есть заем из бита 3, в ином случае очищается |
S: | NЕV, Для проверок со знаком |
V: | R7*R6*R5*R4*R3*R2*R1*R0 Устанавливается при переполнении дополнения до двух от подразумеваемого вычитания из нуля, в ином случае очищается. Переполнение дополнения до двух произойдет если и только если содержимое регистра после операции (результат) будет $80. |
N: | R7 Устанавливается если в результате установлен MSB, в ином случае очищается |
Z: | Rd7*R6*R5*R4*R3*R2*R1*R0 Устанавливается если результат $00, в ином случае очищается |
C: | R7+R6+R5+R4+R3+R2+R1+R0 Устанавливается если есть заем в подразумеваемом вычитании из нуля, в ином случае очищается. Флаг C будет устанавливаться во всех случаях, за исключением случая, когда содержимое регистра после выполнения операции будет $80. |
R: | (Результат)соответствует Rd после выполнения команды |
Пример:
sub r11, r0 ; Вычесть r0 из r11 brpl positive ; Перейти если результат положительный neg r11 ; Выполнить дополнение до двух r11 positive: nop ; Перейти по назначению (пустая операция)
Слов: 1 (2 байта)
Циклов: 1