Команды сложения и вычитания.
Сложение: add op1,op2
Вычитание: sub op1,op2
Сравнение: cmp op1,op2
Комбинации операндов такие же, как и в команде XCHG, op2 может быть также константным выражением (i8 или i16).
По командам ADD и SUB в op1 пересылается сумма или разность op1 и op2 соответственно. Эти команды влияют на флаги переноса CF, переполнения OF, знака SF и нуля ZF.
Флаг CF устанавливается в 1, если при выполнении произошел перенос или заём. Флаг знака становится равным старшему биту результата, который используется как знаковый при представлении двоичных данных как целых чисел со знаком. Флаг переполнения устанавливается в 1, если результат не вмещается в размер операндов при представлении их содержимого как чисел со знаком. Флаг нуля устанавливается в 1, если результат равен нулю.
Команда CMP аналогична команде SUB, только не происходит запоминание результата. Команда CMP лишь устанавливает флаги .
Увеличение на 1: inc op
Уменьшение на 1: dec op
Операнд может быть следующим: r8, m8, r16, m16.
После выполнения этих команд значение операнда увеличивается или уменьшается на 1. В отличие от команд сложения и вычитания, INC и DEC не влияют на флаг CF.
Команды перехода.
Безусловный переход: jmp op
где оp может быть меткой команды, на которую осуществляется переход; регистром или ячейкой памяти, в которых хранится адрес команды, на которую осуществляется переход.
По команде JMP выполнение программы осуществляется с команды, адресуемой в операнде.
Условный переход: jxx op
где xx – условие перехода, op – метка команды.
По команде Jxx выполнение программы продолжается с команды, адресуемой в операнде, если выполняется условие xx, или с команды, следующей за командой Jxx, если условие xx не выполняется.
xx может содержать название флага, тогда переход будет осуществлен, если соответствующий флаг равен 1 (например jz op – переход при ZF=1); букву n и название флага, тогда переход будет осуществлен, если соответствующий флаг равен 0 (например jnz op – переход при ZF=0); аббревиатуру условия перехода, тогда переход осуществится при выполнении этого условия. Аббревиатуру составляют буквы, символизирующие следующие условия:
E – equal (равно);
N – not (не);
G – greater (больше) – для чисел со знаком;
L – less (меньше) – для чисел со знаком;
A – above (больше) – для чисел без знака;
B – below (меньше) – для чисел без знака.
Например: NE – не равно; NGE – не больше и не равно, т.е. L – меньше.
Условие перехода формируется набором флагов, которые устанавливаются в соответствии с результатом работы команды, предшествующей инструкции Jxx.
Флаг – это бит в регистре флагов F. Регистр F является 16-ти разрядным, но только 9 разрядов отводятся под флаги, значение остальных разрядов документацией не определено.
CF (carry flag) – флаг переноса.
OF (overflow flag) – флаг переполнения.
ZF (zero flag) – флаг нуля.
SF (sign flag) – флаг знака.
PF (parity flag) – флаг четности.
AF (auxiliary carry flag) – флаг дополнительного переноса.
DF (direction flag) – флаг направления.
IF (interrupt flag) – флаг прерываний.
ТF (trap flag) – флаг трассировки.
Дата добавления: 2020-10-01; просмотров: 409;