Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОргЭВМ 2 курс 1 сем / comput_org_2018 / Теория / Уч_пос_АрхКомп_2017.docx
Скачиваний:
53
Добавлен:
01.09.2020
Размер:
626.15 Кб
Скачать

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 стек используется в случаях:

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

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

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

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

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