IV.  Четвертая группа вопросов: Ассемблер



 

Архитектура процессоров семейства IA-32.

1. Режимы работы процессора (защищенный, виртуальный, реальный, управления системой). Различия в адресации и моделях памяти для этих режимов.

Режим реальных адресов, или просто реальный режим (real mode) — это режим, в котором работал i8086. Наличие его в i486 и Pentium обусловлено тем, что фирма Intel старается обеспечить в новых моделях процессоров возможность функционирования программ, разработанных для ранних моделей.

Защищенный режим (protected mode) позволяет максимально реализовать все идеи, заложенные в процессорах архитектуры IА-32, начиная с i80286. Программы, разработанные для (реального режима), не могут функционировать в защищенном режиме. Одна из причин этого связана с особенностями формирования физического адреса в защищенном режиме.

Режим виртуального процессора 8086 предназначен для организации многозадачной работы программ, разработанных для реального режима (процессора i8086),совместно с программами защищенного режима. Переход в этот режим (virtual S5S6 mode) возможен, если процессор уже находится в защищенном режиме. Работа программ реального режима в режиме виртуального 13086 возможна благодаря тому, что процесс формирования физического адреса для них производился по правилам реального режима.

Режим системного управления (System Management Mode. SMM) — это новый режим работы процессора, впервые появившийся в процессоре Pentium. Он обеспечивает операционную систему механизмом язя выполнения машинно-зависимых функций, таких как перевод компьютера в режим пониженного энергопотребления или выполнения действий по защите системы. Для перехода в данный режим процессор должен получить специальный сигнал SMI от усовершенствованного программируемого контроллера прерываний (Advanced Programmable Interrupt Controller, APIC), при этом сохраняется состояние вычислительной среды процессора. Функционирование процессора в этом режиме подобно его работе в режиме реальных адресов. Возврат из этого режима производится специальной командой процессора.

Процессор всегда начинает работу в реальном режиме.

 

Регистры процессора

1. Регистры общего назначения (EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI).

32 разрядные регистры. Вот их назначение:

АХ – Accumulator (регистр-аккумулятор) – по умолчанию используется для задания одного из операндов команды и для представления результата.

СХ – Counter (счетчик) – по умолчанию используется, во-первых, как счетчик числа повторения циклов в команде "организация цикла" (LOOP); во-вторых, для задания числа сдвигов в командах сдвигов (его младший байт – CL); в-третьих, для задания числа элементов обрабатываемых строк (цепочек) в командах обработки строк (MOVS, CMPS и т.д.).

DX –Data (регистр данных) – по умолчанию используется как расширение аккумулятора со стороны старших разрядов в командах умножения и деления.

ВХ –Base (базовый регистр) – по умолчанию используется как базовая компонента эффективного адреса операнда, находящегося в памяти. (В терминологии фирмы Intel под эффективным адресом – Effective Address (ЕА) – понимается адрес операнда, формируемый программой (программный адрес).) Для получения физического адреса ячейки памяти, в которой находится операнд, осуществляется преобразование ЕА на основе простейшей модели сегментированной памяти (механизма сегментации).

SP – Stack Pointer (указатель стека) – по умолчанию используется для адресации вершины стека. 

ВР – Base Pointer (указатель базы) – по умолчанию используется как базовая компонента эффективного адреса операнда в памяти по аналогии с ВХ.

Отличие в использовании содержимого регистров ВХ и ВР как базовых компонент ЕА состоит в том, что при использовании ВХ подразумевается обращение к сегменту данных, а при использовании ВР – к сегменту стека (но не через его вершину).

SI – Source Index (индекс источника) – по умолчанию используется для задания индексной компоненты ЕА, а также для адресации элементов строки-источника в командах обработки строк.

DI – Distination Index (индекс приемника) – по умолчанию используется аналогично SI для задания индексной компоненты ЕА, а также для адресации элементов строки-приемника в командах обработки строк.

 

2. Особенности обращения к РОН (к 8-ми, к 16-ти и к 32-х разрядным).

8-ми разрядные (HL-группа) – AH:AL, BH:BL, CH:CL, DH:DL

16-ти – все регистры общего назначения

32-ух – EAX и остальные

 

3. Особенности использования РОН при выполнении команд процессором.

(см. вопрос 2.1)

 

4. Сегментные регистры (CS, DS, ES, FS, GS, SS).

CS – Code Segment (сегмент кода – машинной программы),

SS – Stack Segment (сегмент стека),

DS – Data Segment (сегмент данных),

ES – Extra Segment (дополнительный сегмент).

FS,GS – доп. сегменты

 

5. Регистр указателя команд (EIP) и регистр состояния процессора (EFLAGS).

IP (Instruction Pointer) – Содержимым регистра IP является так называемый продвинутый адрес команды. Это означает, что в момент выполнения какой-либо команды регистр IP указывает на адрес следующей команды. В качестве адреса команды фигурирует адрес ее младшего байта (по адресации).

EFLAGS – Флаги состояния, системные, направления:

TF – Trace (Trap) Flag (флаг трассировки (ловушки)). При установке флага TF процессор переводится в так называемый отладочный (покомандный, пошаговый) режим работы. В этом режиме завершение выполнения любой команды сопровождается выходом на прерывание специального типа (стандартный тип 1 – прерывание по отладке).

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

IF – Interrupt Flag (флаг прерываний). С помощью этого флага разрешаются (IF=1) или запрещаются (IF=0) внешние прерывания, запросы которых поступают на специальный вход INTR (Interrupt Requester). Этот вход обычно связан с микросхемой PIC (Programmable Interrupt Controller) – программируемый контроллер прерываний.

Флаг возобновления (resume flag) RF используется при обработке прерываний от регистров отладки.

Флаг режима виртуального процессора S0S6 (virtual 8086 mode) VM является признаком работы процессора в режиме виртуального 8086:

1 — процессор работает в режиме виртуального процессора 8086.
0 — процессор работает в реальном или защищенном режиме.

               AC – Alignment check (Флаг контроля выравнивания) предназначен для разрешения контроля выравнивания при обращениях к памяти. Используется совместно с битом АМ в системном регистре СRО. К примеру, Pentium разрешает размешать команды и данные начиная с любого адреса. Если требуется контролировать выравнивание данных и команд по адресам, кратным 2 или 4, то установка данных битов приведет к тому, что все обращения по некратным адресам будут возбуждать исключительную ситуацию.

VIF – Virtual Interrupt Flag (Флаг виртуального прерывания), появившийся в процессоре Pentium, при определенных условиях (одно из которых — работа процессора в v режиме) является аналогом флага IF. Флаг VIF используется совместно с флагом VIР.

VIP – Virtuak Interrupt Pending Flag (Флаг отложенного виртуального прерывания), появившийся в процессоре Pentium, устанавливается в 1 для индикации отложенного прерывания. Используется при работе v-режиме совместно с флагом
VIF.

ID – Identification Flag (Флаг идентификации) используется для того, чтобы показать факт поддержки процессором инструкции CPUID. Если программа может установить или сбросить этот флаг, это означает, что данная модель процессора поддерживает инструкцию CPUID.

 

 

6. Управляющие флаги. Флаги состояния (CF, OF, SF, ZF, AF, PF).

ХХХХ OF DF IF TF SF ZF X AF X PF X CF

 

PF – Parity Flag – флаг паритета (четности). Он устанавливается при наличии четного числа единиц в младшем байте результата, в противном случае – сбрасывается. Этот флаг используется как аппаратная поддержка контроля по четности (нечетности).

AF – Аuxiliary Carry Flag (флаг вспомогательного переноса). В этом флаге фиксируется межтетрадный перенос при сложении и межтетрадный заем при вычитании. Значение этого флага используется командами десятичной и ASCII-коррекции сложения и вычитания. Этот флаг можно рассматривать как аппаратную поддержку операций над десятичными числами.

ZF – Zero Flag (флаг нуля). Он устанавливается при нулевом результате операции, в противном случае (ненулевой результат) - сбрасывается.

SF – Sign Flag (флаг знака). В него копируется старший (крайний левый) бит результата, интерпретируемый как знак.

OF – Overflow Flag (флаг переполнения). Он устанавливается в командах сложения и вычитания в случае, если результат операции не помещается в формате операндов. При этом как операнды, так и результат интерпретируются как знаковые целые числа.

 

7. Регистры для выполнения операций с плавающей запятой, регистры, используемые в MMX-командах, XMM-регистры для выполнения команд потоковой обработки данных (SIMD).

Команды технологии ММХ работают с новыми типами данных: 64-разрядными целочисленными данными, а также с данными, упакованными в группы (векторы) общей длиной 64 бита. Такие данные могут находиться в памяти или в восьми ММХ-регистрах. Эти регистры называются мм0, mm1, ..., мм7.

Для операций с плавающей точкой используются 80-разрядная шина сопроцессора. Чтобы ММХ не влиял на их выполнение надо завершить его работу командой ЕММS

 


Дата добавления: 2018-04-04; просмотров: 406; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!