Команди за изваждане

Командите за изваждане включват:

операнд DEC — операция за намаляване, т.е. намаляване на стойността на операнда с 1;

CMP приемник, източник - команда за сравнение. Инструкцията CMP, подобно на инструкцията SUB, изважда операнди и задава флагове, но не записва резултата никъде. Флаговете, зададени от инструкцията CMP, могат да бъдат анализирани чрез специални инструкции за условно прескачане.

SUB приемник, източник — команда за изваждане; неговият принцип на работа:

sink = мивка - източник

SBB sink, source — команда за изваждане, като се вземе предвид заема (CF флаг). Неговият принцип на действие е: приемник = приемник - източник - CF.

Инструкцията SBB е подобна на ADC, но сега CF флагът действа като индикатор за заемане на 1 от най-значимия бит при изваждане на числа.

След командата за изваждане на числа без знак трябва да анализирате състоянието на CF флага. Ако е зададено на 1, тогава това показва, че е настъпило заемане от най-значимата цифра и резултатът е в допълнителния код.

При изваждане на двоични числа със знак, както в случая на добавяне със знак, препълването на мантисата, когато значимият бит на числото е променил знаковия бит на операнда, може да бъде проследено от съдържанието на флага за препълване OF. Задаването му на 1 показва, че резултатът е извън обхвата на числата със знак (т.е. най-значимият бит се е променил) за операнд с този размер и програмистът трябва да предприеме действия, за да коригира резултата.

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

Макросите ви позволяват да посочите име на идентификатор за текстов низ или блок от код, който ще се използва често в програма. Макросите обаче надхвърлят обикновеното заместване. Turbo Assembler имамакро операции, осигуряващи повече гъвкавост при дефиниране на макроси. В комбинация с възможността за използване на макроси с множество редове аргументи, това прави макросите на Turbo Assembler много мощен инструмент. Тази глава описва как можете да използвате текстови макроси и многоредови макроси във вашите програми.

Текстовият макрос е идентификатор, представляващ низ от текстови знаци. Когато Turbo Assembler срещне идентификатор в изрази (и в други ситуации), той го замества с текстови знаци. Например, ако DoneMsg е текстов макрос със стойността „Връщане към DOS“, тогава следният оператор:

Довиждане DB DoneMsg

дава като резултат:

GoodBy DB „Връщане към DOS“