Инструкция SUB


Ассемблер для Windows Ассемблер для Windows

Рассмотрены необходимые сведения для программирования Windows-приложений на ассемблерах MASM и TASM: разработка оконных и консольных приложений; создание динамических библиотек; многозадачное программирование; программирование в локальной сети, в том числе и с использованием сокетов; создание драйверов, работающих в режиме ядра; простые методы исследования программ и др. Подробнее...

Инструкция SUB тоже довольно проста для понимания. Если инструкция ADD выполняет сложение, то команда SUB процессоров семейства i80x86 используется для вычитания. Синтаксис команды SUB такой:

SUB РАЗНОСТЬ, ЧИСЛО

С помощью этой команды можно из РАЗНОСТИ вычесть ЧИСЛО. Результат помещается в РАЗНОСТЬ.

Эта команда может изменять флаги (в зависимости от результата). Флаги изменяются таким же образом, как при выполнении команды ADD. Читайте об этом здесь.

ЧИСЛОМ может быть один из следующих:

  • Область памяти (MEM)
  • Регистр общего назначения (REG)
  • Непосредственное значение (например, число) (IMM)

РАЗНОСТЬЮ может быть один из следующих:

  • Область памяти (MEM)
  • Регистр общего назначения (REG)

Эта команда, также как и команда сложения, не работает с сегментными регистрами. Комбинации РАЗНОСТЬ-ЧИСЛО могут быть следующими:

REG,  MEM
MEM,  REG
REG,  REG
MEM,  IMM
REG,  IMM

Пример использования инструкции SUB:

MOV AL, 5   ; AL = 5
SUB AL, 1   ; AL = 4

Как обычно расскажу, почему эта команда ассемблера называется SUB. Это сокращение от английского слова SUBTRACT, которое можно перевести как “вычесть”.

При выполнении вычитания надо быть особенно внимательным к состоянию флагов процессора, потому что когда от одного числа отнимается другое, вероятность получить отрицательное число в качестве результата существенно выше. Следовательно, надо отслеживать состояние флага SF (флаг знака) и, если он будет установлен, то принимать необходимые меры, если в этом возникнет необходимость.

Например, дальнейшее поведение вашей программы может зависеть от того, какой результат получен после выполнения команды SUB. В таком случае надо проверить состояние флага SF, и в зависимости от его состояния перейти на тот или иной участок программы с помощью меток и специальных инструкций. Но эти инструкции мы пока не изучали, поэтому в данной статье я о них говорить не буду. Ждите следующих уроков - подписывайтесь на новости сайта, чтобы ничего не пропустить.



Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика