Команды вычитания. (22 билет)

К командам вычитания относятся следующие:

DEC операнд — операция декремента, то есть уменьшения значения операнда на 1;

CMP приемник, источник - команда сравнения. Команда CMP так же, как и команда SUB, выполняет вычитание операндов и устанавливает флаги, но результат никуда не записывает. Флаги, устанавливаемые командой CMP, можно анализировать специальными командами условного перехода.

SUB приемник, источник — команда вычитания; ее принцип действия:

приемник = приемник – источник

SBB приемник, источник — команда вычитания с учетом заема (флага CF). Ее принцип действия:
приемник = приемник - источник – CF.

Команда SBB подобна ADC, но теперь уже флаг CF выполняет роль индикатора заема 1 из старшего разряда при вычитании чисел.

После команды вычитания чисел без знака нужно анализировать состояние флага CF. Если он установлен в 1, то это говорит о том, что произошел заем из старшего разряда и результат получился в дополнительном коде.

При вычитании двоичных чисел со знаком, как и в случае знакового сложения переполнение мантиссы, когда значащий разряд числа изменил знаковый разряд операнда, можно отследить по содержимому флага переполнения OF. Его установка в 1 говорит о том, что результат вышел за диапазон представления знаковых чисел (т.е. изменился старший бит) для операнда данного размера, и программист должен предусмотреть действия по корректировке результата.

 

Макрокоманды. (22 билет)

Макрокоманды позволяют вам задавать имя идентификатора для текстовой строки или блока кода, которые будут часто использоваться в программе. Однако макрокоманды выходят за рамки простой подстановки. В Турбо Ассемблере имеются макрооперации, обеспечивающие большую гибкость в определении макрокоманд. В сочетании с возможностью использования макрокоманд из нескольких строк с аргументами это превращает макросредства Турбо Ассемблера в очень мощный инструмент. В данной главе описывается, как можно использовать в программах текстовые макрокоманды и макрокоманды, состоящие из нескольких строк.

Текстовая макрокоманда - это идентификатор, представляющий строку текстовых символов. Когда Турбо Ассемблер обнаруживает идентификатор в выражениях (и в других ситуациях), он подставляет вместо него текстовые символы. Например, если DoneMsg - это текстовая макрокоманда, имеющая значение "Returning to DOS", то следующий оператор:

GoodBy DB DoneMsg

дает в результате:

GoodBy DB 'Returning to DOS'