Программная модель процессора (рисунок 1.3) отображает те блоки и устройства архитектуры процессора, к которым пользователь может обратиться по какой-либо команде. В этом смысле слова, архитектура процессора представляет собой набор из четырнадцати основных внутренних регистров. Регистр это элементарное устройство способное принимать, хранить, преобразовывать и выдавать на внутреннюю шину данные. Все регистры процессора 16 разрядные. Каждый разряд хранит один бит информации.
Каждый из регистров имеет собственное имя, по которому к нему возможно обращение по команде из программы. По назначению и способу использования регистры можно разбить на следующие группы:
· регистры общего назначения (АХ, ВХ, СХ, DХ);
· регистры указателей и индексов (SI, DI, BP, SP);
· сегментные регистры (CS, DS, SS, ES);
· указатель команд (IP);
· регистр (или указатель) флагов (EF).
Для того чтобы было понятно, откуда появилась аббревиатура этих регистров, приведем расшифровку этих названий.
АХ – (accumulator) аккумулятор; ВХ – (base) база;
СХ – (counter) счетчик; DX – (date) данные;
SI – (source index) индекс источника; CS – (code segment) сегмент команд;
DI– (destination index) индексприемника; SS– (stack segment) сегмент стэка;
BP– (base pointer) указатель базы; DS– (date segment) сегмент данных;
ES – (extra segment) дополнительный сегмент;
IP– (instruction pointer) указатель команд; FP – (flags pointer) указатель флагов;
15 8 7 0 номера разрядов в регистрах
AX BX CX DX | AH | AL | Аккумулятор Базовый регистр Регистры общего Счётчик назначения Регистр данных |
BH | BL | ||
CH | CL | ||
DH | DL |
15 0
SI DI BP SP | Индекс источника Регистры Индекс приемника указателей Указатель базы и индексов Указатель стека | |
15 0
CS DS SS ES | Регистр сегмента команд Сегмент- Регистр сегмента данных ные Регистр сегмента стека регистры Регистр дополнительного сегмента | |
15 0
IP | Указатель команд |
15 0
FР | Указатель (регистр) флагов |
Рисунок 1.3-Программная модель процессора Intel 8086
Регистры общего назначения
Особенностью всех этих регистров является то, что их можно использовать в любых арифметических, логических и других операциях, но в то же время каждый из этих регистров имеет определенную специализацию. Например команды деления и умножения требуют чтобы первый операнд непременно находился в регистре АL или AХ или регистрах DX:AX. Четыре 16–разрядных регистра AX, BX, CX, DX, образованны из двух 8-битовых регистров AL, AH, BL, BH, CL, CH, DL, DH. Буквы L и H означают младшие (low-order) и старшие (high-order) байты 16-битовых регистров. К каждому из этих байтовых регистров можно обратиться по определённой команде.
Регистры SI, DI, BP, SP не разделены пополам, поэтому к ним можно обращаться только как к 16-разрядным структурам.
Регистр АХ - основной регистр процессора, используется при всех арифметических и логических операциях над словами, в операциях ввода, вывода и сдвига. В операциях умножения в этом регистре хранится множимое, а в операциях деления - делимое.
Регистр ВХ – базовый регистр, используется при арифметических операциях, а так же для адресации данных в памяти.
Регистр СХ – счётчик, используется как счётчик числа повторений цикла, а также при арифметических операциях. Регистр СL - используется как счётчик при операциях сдвига и циклического сдвига на несколько битов.
Регистр DX - регистр данных, используется при умножении и делении слов, в операциях ввода–вывода для хранения адреса выводимого текста или самого текста.
Сегментные регистры
ЭВМ на базе микропроцессоров INTEL x86 используют в основном сегментированные модели памяти. В этом случае программы и данные хранятся в отдельных областях памяти – сегментах, размер которых колеблется от 16 байт до 64 Кбайт. Каждый сегмент имеет адрес расположения его в памяти. Этот адрес 16-битный и хранится в сегментном регистре. Поэтому для формирования адреса байта в памяти нужны два числа – адрес начала сегмента и смещение искомого байта относительно начала сегмента. Четыре сегментных регистра процессора хранят четыре начальных адреса различных сегментов.
Регистр сегмента CS – хранит адрес сегмента кода текущей исполняемой программы.
Регистр сегмента DS – хранит адрес текущего сегмента данных используемых в программе.
Регистр сегмента SS – хранит адрес сегмента стека.
Стек-это сегмент памяти, используемый как операционной системой для хранения характеристик программы, так и программистом для временного хранения данных, адресов, содержимого регистров МП. Особенностью стека является то, что в командах обращения к стэку адрес ячейки памяти сегмента явно не указывается, а процессор формирует адрес таким образом, что запись и чтение осуществляется только из вершины стека. Обращение к произвольной ячейке стека осуществляется специальным образом с использованием регистра ВР.
Регистр дополнительного сегмента ES – хранит адрес сегмента текущего дополнительного сегмента, который используется для работы над строками или хранения данных и программ.
Дата: 2018-11-18, просмотров: 460.