еще одна инструкция, использующая уже
Наконец, еще одна инструкция, использующая уже знакомый нам по первой статье байт ModR/M. Этот байт позволяет записывать в стек значения, хранящиеся в памяти. Но в данном случае есть одна особенность использования этого байта. Вспомните, что байт ModR/M предполагает наличие двух операндов (один из которых всегда находится в регистре). Здесь же необходимо указывать лишь один операнд - другой все время один и тот же и задается неявно (адрес в ESP). Поэтому поле REG байта ModR/M, служившее для обозначения регистра, теперь используется в качестве расширения опкода и для данной конкретной инструкции всегда одно и то же (постоянно). А сама инструкция вместе с байтом ModR/M выглядит так:
11111111 Mod 110 R/M
Обратите внимание, что у нас снова появляется альтернативное кодирование - теперь для команды помещения в стек значений регистров (при Mod=11). Например, указанная выше инструкция PUSH EAX может быть закодирована и таким образом:
11111111 11110000 (FFh F0h)
Данные в виде параметров передаются функциям Windows именно через стек. Рассмотрим функцию MessageBoxA, которая принимает 4 параметра. Первым в стек помещается число, указывающее на стиль создаваемого окна сообщения. Это число представляет собой битовую структуру (см. рис.)
Флаги стиля MessageBoxA
Поля структуры могут содержать следующие значения, определяющие внешний вид и поведение окна сообщения. Тип окна:
0 - содержит одну кнопку OK;
1 - содержит две кнопки: OK и Cancel;
2 - содержит три кнопки: Abort, Retry, Ignore;
3 - содержит три кнопки: Yes, No, Cancel;
4 - содержит две кнопки: Yes и No;
5 - содержит две кнопки: Retry и Cancel.
Поле значок содержит значение, определяющее вид отображаемой пиктограммы в окне:
0 - нет значка;
1 - красный кружок с крестиком (значок стоп);
2 - вопросительный знак;
3 - восклицательный знак;
4 - кружочек с буквой i.
Поле кнопка определяет кнопку по умолчанию, т.е. ту, которая ассоциируется с нажатием на клавишу 'Enter' при появлении окна сообщения на экране:
0 - 1-я кнопка;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий