Арифметические команды

Операнды могут быть двоичные (8 или 16 битов, целые, со знаком или без знака), двоично-десятичные (от 1 до 255 байтов, без знака, в упакованном или распакованном (ASCII-коды) форматах). Машина не обращает внимания на формат и обращается с ними формально, как с двоичными числами в дополнительном коде. Но для десятичной арифметики после операции требуется коррекция (операции только над одним байтом).

Команды сложения, вычитания и сравнения

Команды сложения, вычитания и сравнения — двухадресные.

l ADD dst, src сложение двоичных чисел (add — сложить). Прибавляет байт или слово из памяти, регистра непосредственно к содержимому регистра или прибавляет байт или слово из регистра непосредственно к памяти (содержимое src складывается с содержимым dst). Операнды dst и src должны иметь одинаковый формат (оба или байт или слово) и тип данных: src — r, m, i; dst — r, m (невозможно rsegm, i и нельзя, чтобы оба типа были m или оба rsegm). Команда ADD формирует флаги AF, CF, OF, PF, SF и ZF.

l SUB dst, src — вычитание двоичных чисел (substract — вычесть). Вычитает байт или слово, взятое из памяти, регистра или непосредственно из содержимого регистра, или вычитает байт или слово, взятое из регистра или непосредственно из памяти (содержимое src вычитается из содержимого dst). Операнды dst и src должны иметь одинаковый формат (оба или байт или слово) и могут быть: src — r, m, i; dst — r, m (невозможно rsegm и нельзя, чтобы оба типа были m). Команда SUB формирует флаги AF, CF, OF, PF, SF и ZF.

l CMP dst, src — сравнение (compare — сравнить). Сравнивает содержимое двух полей данных; фактически команда вычитает второй операнд (src) из первого (dst), но значение dst не изменяет, а лишь формирует флаги. Операнды dst и src должны иметь одинаковый формат (оба или байт или слово) и могут быть: src — r, m, i; dst — r, m (невозможно rsegm, i и нельзя, чтобы оба типа были m или оба rsegm). Команда CMP формирует флаги: CF, ZF при сравнении чисел без знака, CF, OF, SF, ZF при сравнении чисел со знаком; флаги AF, PF не определены.

Команды приращения

Команды приращения — одноадресные.

l INC dst: инкремент (increment — нарастить). Прибавляет 1 к содержимому dst. Операнд dst может быть представлен оператором типа r или m. Команда INC формирует флаги PF, AF, ZF, SF, ОF.

l DEC dst: декремент (decrement — уменьшить). Вычитает 1 из содержимого dst. Операнд dst может быть представлен оператором типа r или m. Команда DEC формирует флаги PF, AF, ZF, SF, ОF.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: