Материал: Уч_пос_АрхКомп_2017

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рис. 3.1

На схеме, показанной на рис. 3.1, использованы следующие компоненты процессора и памяти:

  • АЛУ – арифметико-логическое устройство выполняет операции по обработке данных;

  • РОНы – регистры общего назначения (от 8 до нескольких сотен штук) – сверхбыстрая память малой емкости для хранения операндов;

  • Рг СС – регистр слова состояния. Содержит текущее состояние процессора, в который входит уровень приоритета текущей программы, биты условий {j}завершения последней команды, режим обработки текущей команды. Возможны следующие режимы обработки (в порядке возрастания уровня приоритета):

- User Mode – режим пользователя; в этом режиме не могут выполнятся системные команды (команды изменения состояния процессора и команды ввода-вывода);

- SuperVisor Mode – режим супервизора; обеспечивается выполнение всех команд ввода- вывода;

- Kernel Mode – режим ядра; в нем возможно выполнение всех команд процессора;

  • ПСч – программный счетчик. Содержит адрес текущей команды и автоматически наращивается для подготовки адреса следующей команды (исключение составляет команда перехода);

  • Рг Команд – регистр команд. Содержит код исполняемой в данный момент команды;

  • ДешКОПиРА – дешифратор кода операции и режимов адресации;

  • Формирователь УС – формирователь управляющих сигналов { Уi };

  • РАП - регистр адреса памяти; РДП - регистр данных памяти;

  • Рг УиС – регистр управления и состояния контроллера памяти.

3.3. Организация процессора и памяти в архитекуре Intel x86.

В процессоре Intel 8086 длина слова составляет 16 бит или 2 байта. Минимально адресуемой и обрабатываемой единицей информации является байт, при этом адрес слова совпадает с адресом младшего байта и является четным. При разрядности адреса 16 бит максимальная емкость прямо адресуемой памяти составляет 216 = 64 Кбайт. Для расширения адресуемого пространства памяти используется ее разбиение на блоки – сегменты, называемое сегментированием памяти. Каждый сегмент имеет произвольную длину, не превышающую 64 Кбайт. Адрес байта в сегментированной памяти задается двумя составляющими: сегментная часть (16 бит), определяющая адрес начала сегмента, и смещение (16 бит) байта в пределах сегмента. Обычно адрес представляется в виде пары Сегмент (Segment) : Смещение (Offset). Начало размещения сегмента выравнивается на границу блока памяти из 16 байт, называемого «параграфом». Соответственно, физический адрес памяти получается путем суммирования сегмента, сдвинутого на 4 бита влево, со значением смещения. Результатом такого суммирования является 20-битный физический адрес, чем обеспечивается адресация 1 Мбайт памяти.

Пример. Пусть Segment = DCBA, Offset = 5678.

Физический адрес Adr будет определяться суммой: DCBA0 + 5678 = E2218.

3.3.1. Программно доступные регистры процессора

Начиная с 80386, процессоры Intel предоставляют 16 основных регист­ров для пользовательских программ плюс еще 11 регистров для работы с числами с плавающей запятой (FPU/NPX) и мультимедийными при­ложениями (ММХ). Все команды так или иначе изменяют значения ре­гистров, и всегда быстрее и удобнее обращаться к регистру, чем к памяти.

Регистры общего назначения

16-битные регистры АХ (аккумулятор), ВХ (база), СХ (счетчик), DX (регистр данных) могут использоваться без ограничений для любых це­лей – временного хранения данных, аргументов или результатов различ­ных операций. На самом деле, начиная с процессора 80386, все эти регистры имеют размер 32 бита и называ­ются они ЕАХ, EВХ, EСХ, EDX. Кроме этого, отдельные байты в 16-бит­ных регистрах АХ - DX тоже имеют свои имена и могут использоваться как 8-битные регистры. Старшие байты этих регистров называются АН, ВН, СН, DH, а младшие - AL, DL, CL, DL.

Другие четыре регистра общего назначения (РОН) – SI (индекс источни­ка), DI (индекс приемника), BP (указатель базы), SP (указатель сте­ка) – имеют более конкретное назначение и могут применяться для хра­нения всевозможных временных переменных, только когда они не используются по назначению. Регистры SI и DI используются в стро­ковых операциях, ВР и SP используются при работе со стеком. Так же как и для регистров АХ - DX, начиная с процессора 80386, эти четыре регистра являются 32-битными, называются ESI, EDI, EВР и ESP соответственно и могут использоваться как универсальные РОН.

Сегментные регистры

При использовании памяти для формирования любого адреса применяются два числа – адрес начала сегмента и смещение искомого байта относительно этого начала. Для хранения адреса начала сегмента в процессорах Intel8086 предусмотрены следующие сегментные регистры – CS (сегмент кода), DS (сегмент данных), ES (дополнительный сегмент данных), SS(сегмент стека). Начиная с процессора 80386, появились дополнительные регистры FS и GS.

Смещение следующей выполняемой команды всегда хранится в специальном регистре – IP (указатель инструкции), принудительная запись в кото­рый приведет к тому, что следующей будет исполнена какая-ни­будь другая команда, а не команда, расположенная сразу за данной. В общем случае при передаче управления в другой сегмент команды безусловного перехода, вызова подпрограммы и т. п. – осуществляют запись в регистры CS и IP.

Регистр флагов

Х

Х

Х

Х

OF

DF

IF

TF

SF

ZF

0

AF

0

PF

1

CF

15

8

7

0

CF - флаг переноса (CARRY);

PF - флаг четности (PARITY);

AF - дополнительный флаг переноса (AUXILARY);

ZF - флаг нуля (ZERO);

SF - знаковый флаг (SIGN);

TF - флаг слежения, ловушка (TRAP);

IF - флаг прерываний (INTERRUPTION);

DF - флаг направления (DIRECTION);

OF - флаг переполнения (OVERFLOW).

3.3.2. Организация стека в архитектуре Intel х86

Стек – специальная область памяти, достуная для записи (заполнения) и выборки (выталкивания) данных только с одного конца, называемого верхушкой стека. В процессорах Intel Х86 на верхушку стека указывает РОН указатель стека (SP – stack pointer), стек может работать только со словами, заполнение стека происходит в сторону уменьшения адресов с помощью команды PUSH, а освобождение стека (выталкивание данных из стека) – в сторону увеличения адресов командой РОР.

По существу команды PUSH AX и POP AX, соответственно сохраняющая содержимое РОН AX в стеке и восстанавливающая содержимое РОН AX из стека, выполняются в два приема:

PUSH AX: POP AX:

(SP)-2SP [SP]AX

(AX)[SP] (SP)+2SP

При выполнении программ в процессорах Intel Х86 стек используется в случаях:

  • промежуточного хранения содержимого регистра или группы регистров;

  • обмена содержимого регистров;

  • сохранения адресов возврата при вызове подпрограмм;

  • передачи параметров между вызываемой и вызывающей программами;

  • сохранения адресов возврата и регистра флагов при обработке прерываний.

3.3.3. Организация выполняемых программ в ms dos

Поскольку выполнение лабораторных работ по курсу происходит в среде ОС MS DOS, рассмотрим основные типы исполняемых файлов:

  • *.bat – задают порядок выполнения некоторой последовательности программ;

  • *.com – файлы исполняемых программ типа com;

  • *.exe – файлы исполняемых программ типа exe.

Файлы типа *.com содержат только исполняемый код без дополнительной информации о программе, формируются в загрузочном виде и не требуют настройки. Весь код, данные и стек такой программы располагаются в одном сегменте, имеют длину не более 64 Кб и служат для организации простых модулей, ориентированных на модели памяти tiny и small (приложение 1).

Файлы типа *.exe могут иметь произвольную длину, они содержат заголовок, в котором описывается размер файла, требуемый объем памяти и таблица загрузки – список команд с абсолютными адресами, требующих настройки при загрузке в зависимости от размещения программы в памяти.

Структура размещения в памяти файла типа COM показана на рис. 3.3.

64 Кб

 Стек

 Данные и код программы

SS:SP

100h  CS:IP ( директива ORG 100h)

PSP

0

 DS, CS, ES, SS

Рис. 3.3

В начальной части com-файла программы (а также и exe-файла) MS DOS размещает специальный блок – префикс сегмента программы ПСП (PSP - рrogram segment prefix), который содержит информацию для доступа программы к параметрам командной строки, к среде окружения, для реакции программы на критические ошибки и управляющие команды типа Ctrl+C. В начальной части PSP размещена команда вызова обработчика прерывания для завершения программы и возврата в DOS. Так как после загрузки все сегментные регистры, включая CS, указывают на начало PSP, а IP = 0, то программа не может исполняться, начиная с этого адреса, и первой командой делают ORG 100h , устанавливающуую CS:IP на конец PSP.

Структура размещения в памяти файла типа EXE показана на рис. 3.4ю мых файлов. сразу за данной.., а состав ряда полей ПСП – в табл. 3.1.

SS:SP

Стек

SS:00

Данные

DS (сюда его необходимо установить)

Код

100h CS:00

PSP

Источник: https://studfile.net/preview/15919868/