- •Структура мп ix86 фирмы Intel
- •Регистры общего назначения (регистры данных)
- •Регистры-указатели
- •Регистры сегментов (сегментные регистры)
- •Указатель команд и регистр флагов
- •Сегментация памяти
- •Структура команд мп
- •Формат «Регистр-регистр» (Рг-Рг) – 2 байта
- •Формат «Регистр-память» (Рг-яп) – 2÷4 байта
- •Формат «Регистр-непосредственный операнд» (Рг-но) – 3÷4 байта
- •Формат «Память-непосредственный операнд» (яп-но) – 3÷6 байтов
- •Представление данных в пэвм
- •Целые числа
- •Двоично-десятичные числа (bcd)
- •Символьные данные
- •Вещественные данные
- •Система команд мп семейства iх86 фирмы Intel
- •Команды сложения и вычитания
- •Дополнительные команды
- •Команды умножения и деления
- •Команды преобразования длины
- •Стековые команды
- •Доступ к элементам стека с помощью регистра вр
- •Команды передачи управления
- •Близкие и далекие переходы.
- •Адресация в переходах.
- •Конструкции языка Ассемблера Литература
Регистры сегментов (сегментные регистры)
Сегментация памяти позволяет укоротить адресные коды, кроме того, каждый сегмент имеет свое предназначение, что повышает надежность программ.
CS (Code Segment) – регистр сегмента команд, определяет начало сегмента, содержащего адрес текущей выполняемой команды;
DS (Data Segment) – регистр сегмента данных, определяет начало сегмента, содержащего константы и данные;
SS (Stack Segment) – регистр сегмента стека, указывает на начало сегмента стека;
ЕS (Extension Data Segment) – регистр дополнительного сегмента данных, определяет начало сегмента, который обычно используется для запоминания промежуточных данных или как расширение сегмента данных.
Указатель команд и регистр флагов
IP – указатель команд, выполняет роль счетчика команд; его содержимое – это смещение относительно начального адреса сегмента команд (CS).
Во время выполнения программы содержимое регистра IP изменяется и всегда хранит адрес следующей выбираемой для выполнения команды.
Flags (PSW) – регистр флагов, содержит информацию о текущем состоянии МП. Рассмотрим структуру регистра флагов подробнее (см. рис.3).
Flags |
|
|
|
|
OF |
DF |
IF |
TF |
SF |
ZF |
|
AF |
|
PF |
|
CF |
||
|
15 |
|
|
|
11 |
10 |
9 |
8 |
7 |
6 |
|
4 |
|
2 |
|
0 |
Рис.3
Флаги разделяют на:
условные (флаги условий), отражающие результаты выполнения предыдущей команды в АЛУ и используемые в командах условных переходов;
управляющие (флаги управления), от которых зависит выполнение специальных функций МП.
Условные флаги перечислим в алфавитном порядке.
AF (Auxiliary Carry flag) – флаг вспомогательного переноса, предназначенный для обработки чисел в BCD-формате, используется при выполнении арифметических операций над числами длиной 1 байт для индикации переноса из младшей тетрады в старшую (или займа из старшей тетрады). Здесь BCD (Binary Coded Decimal) – двоично-десятичное представление чисел.
CF (Carry flag) – флаг переноса, предназначен для индикации переноса из старшего байта, используется в операндах, разрядность которых больше 16 бит.
OF (Overflow flag) – флаг переполнения, предназначен для индикации переполнения результатов при выполнении арифметических операций. При сложении он устанавливается в 1, если есть перенос в старший бит, но нет переноса из старшего бита.
PF (Parity flag) – флаг четности, используется как контрольный бит, устанавливается в 1, если младший байт содержит четное число единиц.
SF (Sign flag) – флаг знака, равен 1 для отрицательного результата.
ZF (Zero flag) – признак нулевого результата.
Управляющие флаги устанавливаются программным путем и используются для изменения состояния МП.
DF (Direction flag) – флаг направления, применяется в командах обработки строк. При DF=1 обработка осуществляется от наибольшего адреса к меньшему, а при DF=0 – от начала к концу.
Установка флага осуществляется следующими командами ассемблера
-
Команда
Устанавливает значение DF
STD
1
CLD
0
IF (Interrupt-Enable flag) – разрешение прерывания, используется для разрешения или запрета обработки внешнего маскируемого прерывания. Устанавливается командами ассемблера
-
Команда
Значение IF
Результат установки
STI
1
Обработка прерывания разрешена
CLI
0
Обработка прерывания запрещена
TF (Trap flag) – трассировка, используется для осуществления покомандного (пошагового) выполнения программы. При TF=1 МП автоматически вырабатывает внутренние прерывания после каждой команды, что удобно для отладочного режима выполнения программы. Изменение состояния флага TF не выполняется одной командой, а требует последовательности специальных команд, которые будут рассмотрены ниже.