
- •175. Навіщо потрібні криптографічні протоколи.
- •176. Гібридні криптосистеми.
- •177. Цифровий підпис.
- •181. Екранування, аналіз захищеності.
- •182. Антивірус Касперського.
- •Антивірус Касперського 2010 Базовий захист
- •183. Антивірус BitDefender.
- •184. Антивірус Dr.Web.
- •Характерные особенности
- •185. Антивірус nod32.
- •186. Поняття та переваги мови асемблера. Запис лексем. Запис рядків.
- •Ссылки вперед
- •Большой размерности
- •31 (Таким образом, этот флаг можно использовать для операций над числами
- •Команда сравнения
- •Безусловные переходы
- •Команда безусловного перехода
- •Команды условного перехода и флаги
- •228 Глава 10. Команды передачи управления
- •Xor: Если один из сравниваемых битов равен 0, а другой равен 1, то результат равен 1; если сравниваемые биты одинаковы (оба - 0 или оба - 1) то результат - 0.
Безусловные переходы
Предыдущее обсуждение выявило некоторые детали механизма перехода. Коман-
ды перехода модифицируют регистр указателя команды EIP/IP и, возможно, сег-
ментный регистр кода CS. Что именно должно подвергнуться модификации,
зависит:
Безусловные переходы 215
••• от типа операнда в команде безусловного перехода (ближний или дальний);
от модификатора, который указывается перед адресом перехода в команде пе-
рехода и может принимать следующие значения (сам адрес при прямом пере-
ходе находится непосредственно в команде, а при косвенном — в регистре или
ячейке памяти):
П NEAR PTR — прямой переход на метку внутри текущего сегмента кода, при
этом модифицируется только регистр EIP/IP (в зависимости от заданного
типа сегмента кода use!6 или use32) на основе указанного в команде адреса
(метки) или выражения, использующего символ извлечения значения счет-
чика адреса команд ($);
П FAR PTR — прямой переход на метку в другом сегменте кода, при этом адрес
перехода задается в виде непосредственного операнда или адреса (метки)
и состоит из 16-разрядного селектора и 16/32-разрядного смещения, кото-
рые загружаются, соответственно, в регистры CS и EIP/IP;
D WORD PTR — косвенный переход на метку внутри текущего сегмента кода, при
этом модифицируется (значением смещения размером 16 или 32 бита из
памяти по указанному в команде адресу или из регистра) только регистр
EIP/IP;
D DWORD PTR — косвенный переход на метку в другом сегменте кода, при этом
модифицируются (значением из памяти — и только из памяти, из регистра
нельзя) оба регистра, CS и EIP/IP (первое слово/двойное слово адреса пере-
хода, представляющее собой смещение, загружается в EIP/IP; второе/третье
слово — в CS).
Команда безусловного перехода
Синтаксис команды безусловного перехода без сохранения информации о точке
возврата:
jmp [модификатор] адрес_перехода
Здесь адрес_перехода представляет метку или адрес области памяти, в которой
находится указатель перехода.
Всего в системе команд процессора есть несколько кодов машинных команд
безусловного перехода JMP. Их различия определяются дальностью перехода
и способом задания целевого адреса. Дальность перехода определяется местопо-
ложением операнда адрес_перехода. Этот адрес может находиться в текущем сег-
менте кода или в некотором другом сегменте. В первом случае переход называется
внутрисегментным, или близким, во втором — межсегментным, _______или дальним.
Внутрисегментный переход предполагает, что изменяется только содержимое
регистра EIP/IP.
Команды условного перехода и флаги
Мнемоническое обозначение некоторых команд условного перехода отражает на-
звание флага, с которым они работают, и имеет следующую структуру: первым идет
символ ≪j≫ (jump ~ переход), вторым — либо обозначение флага, либо символ от-
рицания ≪п≫, после которого стоит название флага. Такая структура команды от-
ражает ее назначение. Если символа ≪п≫ нет, то проверяется состояние флага и,
если он равен 1, производится переход на метку перехода. Если символ ≪п≫ при-
сутствует, то проверяется состояние флага на равенство 0 и в случае успеха произ-
водится переход на метку перехода. Мнемокоды команд, названия флагов и усло-
вия переходов приведены в табл. 10.3. Эти команды можно использовать после
любых команд, изменяющих указанные флаги.
Таблица 10.3. Команды условного перехода и флаги
Если внимательно посмотреть на табл. 10.2 и 10.3, видно, что многие команды
условного перехода в них эквивалентны, так как в них анализируются одинаковые
флаги.
В листинге 10.1 приведен пример программы, производящей в строке симво-
лов длиной п байт замену строчных букв английского алфавита прописными. Для
осмысленного рассмотрения этого примера вспомним ASCII-коды, соответствую-
щие этим буквам (см. главу 6). Строчные и прописные буквы в таблице ASCII упо-
рядочены по алфавиту. Строчным буквам соответствует диапазон кодов 61h-7ah,
прописным — 41h-5ah. Для того чтобы понять идею, лежащую в основе алгоритма
преобразования, достаточно сравнить представления соответствующих прописных
и строчных букв в двоичном виде: