Руководство по ассемблеру



А теперь поставим перед собой задачу научиться сочетать функции, написанные на Си, и функции, написанные на ассемблере. Проще всего это сделать, подсмот­рев, как компилятор транслирует функцию на язык ассемблера. Разумеется, ка­ждый компилятор делает это по-своему, поэтому попробуем поработать с тем, что оказалось под рукой — компилятором Borland С++ версии 5.5. Г.

Поразрядные операции и адресация

Окончания арифметических операций воздействуют на состояние 6 флагов. Громадная частица сих джокеров будет рассчитана после исполнения арифметических операций с поддержкой команд относительного перехода, а также с поддержкой функции IN (перебой по восполнению). Воздействие циферных процедур на знаки описано ниже.

CF (флаг трансдукции): Если в результате сложения совершается сдвиг из главного разряда, символ переноса взводится; в другом случае символ трансдукции сбрасывается. При отнимании знак переноса воздевается, если свершается заимствование в главный бит результата; при нехватке заема символ сбрасывается. Необходимо помнить, что при происхождении меточного трансдукции SC != VH (знак пополнения). Символ трансдукции АР имеет возможность применяться для индикации беззнакового переполнения.

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


назад далее