Чтение онлайн

на главную - закладки

Жанры

Ассемблер для процессоров Intel Pentium

Магда Юрий

Шрифт:

Примеры использования директивы LABEL:

byte_array LABEL BYTE

word_array DW 10 DUP(0)

Здесь имена bytearray и wordarray ссылаются на одну и ту же область памяти.

3.3. Программная модель процессора Intel Pentium

Для понимания работы команд ассемблера необходимо четко представлять, как выполняется адресация данных, какие регистры процессора и как могут использоваться при выполнении инструкций. Сейчас мы рассмотрим базовую программную модель процессоров Intel Pentium, в которую входят:

– 8 регистров

общего назначения, служащих для хранения данных и указателей;

– регистры сегментов – они хранят 6 селекторов сегментов;

– регистр управления и контроля EFLAGS, который позволяет управлять состоянием выполнения программы и состоянием (на уровне приложения) процессора;

– регистр-указатель EIP выполняемой следующей инструкции процессора;

– система команд (инструкций) процессора;

– режимы адресации данных в командах процессора.

Начнем с описания базовых регистров процессора Intel Pentium.

Базовые регистры процессора Intel Pentium являются основой для разработки программ и позволяют решать основные задачи по обработке данных. Все они показаны на рис. 3.6.



Рис. 3.6. Базовые регистры процессора Intel Pentium


Среди базового набора регистров выделим отдельные группы и рассмотрим их назначение. Начнем с 32-разрядных регистров общего назначения (ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, EBP, ESP), которые могут использоваться в качестве:

– операндов в арифметических и логических операциях;

– операндов при вычислении адресов операндов;

– указателей на переменные в памяти.

Несмотря на то что любой из этих регистров можно использовать для вышеперечисленных операций, необходимо учитывать специфику применения регистра ESP – он служит для хранения указателя стека, поэтому задействовать его для других целей не рекомендуется. Во многих программах требуется хранить в регистрах определенные значения операндов в процессе выполнения каких-либо операций. Для этого подходят регистры ЕСХ, ESI и EDI. Если при этом используется отдельный сегмент данных, то некоторые команды ассемблера предполагают, что переменная, адресуемая одним из этих регистров, находится в сегменте данных, определяемом регистром DS.

Во многих случаях регистры общего назначения используются для предопределенных целей:

– ЕАХ выполняет функцию аккумулятора при работе с операндами и хранит результат операции;

– ЕВХ – указатель на данные, находящиеся в сегменте данных, адресуемом регистром DS;

– ЕСХ – счетчик циклов и элементов при строковых операциях;

– EDX – указатель на порты устройств ввода-вывода;

– ESI – указатель на данные, находящиеся в сегменте, адресуемом регистром DS (при выполнении строковых операций содержит смещение строки-источника);

– EDI – указатель на данные, находящиеся в сегменте, адресуемом регистром ES (при выполнении строковых операций содержит смещение строки-приемника);

– ESP содержит указатель

стека в сегменте стека, адресуемом регистром SS;

– ЕВР содержит указатель на данные, находящиеся в стеке, адресуемом регистром SS.

Младшие 16 бит 32-разрядных регистров общего назначения могут адресоваться так же, как и 16-разрядные регистры в процессорах 8086 с именами АХ, ВХ, СХ, DX, ВР, s1 , DI, SP. В свою очередь, 16-разрядные регистры АХ, ВХ, СХ и DX позволяют обращаться отдельно как к старшим 8-разрядным регистрам (АН, ВН, СН, DH), так и к младшим (AL, BL, CL, DL). Это проиллюстрировано рис. 3.7.

Сегментные регистры (CS, DS, SS, ES, FS и GS) содержат 16-разрядные селекторы сегментов. Селектор представляет собой специальный указатель, который идентифицирует данный сегмент в памяти. Более подробно мы остановимся на использовании сегментных регистров в главе 4.



Рис. 3.7. Использование регистров общего назначения


Помимо регистров общего назначения и сегментных регистров, как мы знаем, в базовой архитектуре имеется еще два регистра: регистр управления/состояния EFLAGS и регистр-указатель адреса следующей инструкции El Р. Рассмотрим их более подробно.

Регистр EFLAFS, часто именуемый регистром флагов, имеет 32 разряда и содержит группу битов или, как их чаще называют, флагов состояния, управляющий флаг и группу системных флагов. На рис. 3.8 показана структура регистра флагов и приводится расшифровка наиболее часто используемых флагов.



Рис. З.8. Регистр управления/состояния процессора


Указанные на рис. 3.8 флаги наиболее часто используются в прикладных программах и сигнализируют о следующих событиях:

– OF (флаг переполнения) фиксирует ситуацию переполнения, то есть выход результата арифметической операции за пределы допустимого диапазона значений;

– DF (флаг направления) используется командами обработки строк. Если DF = 0, строка обрабатывается в прямом направлении, от меньших адресов к большим. Если DF = 1, обработка строк ведется в обратном направлении;

– SF (флаг знака) показывает знак результата операции, при отрицательном результате SF = 1;

– ZF (флаг нуля) устанавливается в 1, если результат операции равен 0;

– AF (флаг вспомогательного переноса) используется в операциях над упакованными двоично-десятичными числами. Этот флаг служит индикатором переноса или заема из старшей тетрады (бит 3);

– PF (флаг четности) устанавливается в 1, если результат операции содержит четное число двоичных единиц;

– CF (флаг переноса) показывает, был ли перенос или заем при выполнении арифметических операций.

Из всех этих флагов только флаг переноса CF может устанавливаться или сбрасываться непосредственно при помощи команд ассемблера stc, cl с и стс. Кроме того, в этот флаг может быть скопирован бит, определенный командами bt, bts, btr и btc.

Поделиться:
Популярные книги

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

Привет из Загса. Милый, ты не потерял кольцо?

Лисавчук Елена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Привет из Загса. Милый, ты не потерял кольцо?

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Имя нам Легион. Том 3

Дорничев Дмитрий
3. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 3

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

У врага за пазухой

Коваленко Марья Сергеевна
5. Оголенные чувства
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
У врага за пазухой

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Оцифрованный. Том 1

Дорничев Дмитрий
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Оцифрованный. Том 1

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит