Mov команда может перемещать значение
Давайте исследуем вышеприведенный код:
Mov команда может перемещать значение от регистра, памяти или непосредственного значения к другому регистру. В примере выше, eax содержит 12345678h. Затем значение регистра ах (3-ий байт слева в регистре eax) копируется в регистр cl (самый младший байт регистра ecx). Далее, из регистра cl вычитается 10, и затем значение из регистра cl копируется в регистр al(самый младший байт регистра eax).
Есть различные типы регистров:
Универсальные
Эти 32-битные (и 16/8 для их компонентов) регистры могут использоваться для чего угодно:
eax (ax/ah/al) |
Аккумулятор |
ebx (bx/bh/bl) |
Базовый регистр |
ecx (cx/ch/cl) |
регистр-счетчик |
edx (dx/dh/dl) |
регистр данных |
Хотя они и имеют названия, вы можете использовать их как угодно.
Сегментные регистры
Сегментные регистры определяют сегмент памяти, которая используется. Вероятнее всего, они вам не понадобятся в win32asm, потому, что windows использует плоскую систему памяти. В dos, память разделена на сегменты по 64kb, так, что если вы хотите определить адрес памяти, вы определяете сегмент и смещение (например 0172:0500 (сегмент:смещение)). В windows, сегменты имеют размер 4Gb, так, что в сегментации в win. Сегментные регистры всегда - 16-битные.
CS |
Сегмент кода |
DS |
Сегмент данных |
SS |
Сегмент стека |
ES |
Дополнительный сегмент |
FS (только с 286+) |
Универсальный сегмент |
GS (только с 386+) |
Универсальный сегмент |
Регистры указателя
Фактически, вы можете использовать регистры указателя, как универсальные регистры (eip - исключение), пока вы сохраняете их первоначальные значения. Регистры указателя называются так потому, что их часто используют для сохранения адресов памяти. Некоторые опкоды (movb,scasb, и т.д.) также их используют.
esi (si) |
Индекс источника |
edi (di) |
Индекс приемника |
eip (ip) |
Указатель команды |
Регистр EIP (или IP в 16-разрядных программах) содержит указатель на команду, которую собирается выполнить процессор. Так что вы не можете использовать регистр eip как универсальный.
Регистры указателя стека
Есть 2 стековых регистра: esp & ebp. Esp содержит текущую позицию стека в памяти (подробнее об этом в следующих уроках). Ebp используется в функциях как указатель на локальные переменные.
esp (sp) |
Указатель стека |
ebp (bp) |
Указатель базы кадра стека |
[наверх]
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий