Команды вычитания. (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'