- •Основы алгоритмизации и программирования
- •29 Декабря 2011, протокол № 4
- •Введение
- •Этапы развития эвм
- •Поколения эвм
- •Машинно-ориентированные языки программирования
- •Архитектура эвм
- •Микропроцессоры intel
- •Набор регистров
- •Регистры общего назначения
- •Сегментные регистры
- •Регистры состояния и управления
- •Организация памяти
- •Сегментная организация памяти
- •Типы данных
- •Символы
- •Целые числа
- •Указатель на память
- •Цепочки
- •Вещественые числа
- •Двоично-десятичные числа (bcd)
- •Формат команд
- •Обработка прерываний
- •Int тип_прерывания
- •Синтаксис ассемблера
- •Алфавит ассемблера
- •Директивы сегментации
- •Упрощённые директивы сегментации
- •Директивы резервирования и инициализации данных
- •Операнды
- •Способы задания операндов Прямая адресация
- •Косвенная адресация
- •Косвенная базовая адресация
- •Косвенная базовая адресация со смещением
- •Косвенная индексная адресация со смещением
- •Косвенная базовая индексная адресация
- •Косвенная базовая индексная адресация со смещением
- •Операторы
- •Функциональная классификация машинных команд
- •Команды пересылки данных Команды общего назначения
- •Работа с адресами и указателями
- •Преобразование данных
- •Xlat [адрес_таблицы_перекодировки]
- •Ввод из порта и вывод в порт
- •Работа со стеком
- •Арифметические команды Форматы арифметических данных
- •Арифметические операции над целыми двоичными числами
- •Логические команды
- •Команды передачи управления
- •Команда безусловного перехода
- •Условные переходы
- •Организация циклов
- •Основы алгоритмизации и программирования
Набор регистров
Регистрами называются области высокоскоростной памяти, расположенные внутри процессора в непосредственной близости от его исполнительного ядра. Доступ к ним осуществляется намного быстрее, чем к ячейкам оперативной памяти.
Первые модели микропроцессоров i8086/8088 имели 14 16-разрядных регистров. Далее, начиная с i386, регистры были расширены до 32-разрядных. А последние модели (Pentium и др.) содержит гораздо большее число регистров, большинство из них 64-разрядные. Но в современных микропроцессорах можно выделить часть, предназначенную для использования в реальном режиме и практически соответствующую процессору i8086. Именно эту часть мы и будем рассматривать далее.
Регистры делятся на регистры общего назначения, сегментные регистры и регистры состояния и управления.
Регистры общего назначения
Данная группа регистров являются основными рабочими регистрами ассемблерных программ. Их можно разделить на группы:
регистры данных, их можно использовать для временного хранения данных и выполнения над ними требуемых операций. Они допускают независимое обращение к своим младшим и старшим частям.
AX |
AH |
AL |
||
|
|
|
||
BX |
BH |
BL |
||
|
|
|
||
CX |
CH |
CL |
||
|
|
|
||
DX |
DH |
DL |
||
|
15 8 |
7 0 |
|
|
SI |
|
|||
|
|
|
||
DI |
|
|||
|
|
|
||
SP |
|
|||
|
|
|
||
BP |
|
|||
|
15 |
0 |
|
|
Рисунок 2. Регистры общего назначения
AX (AH/AL) – регистр-аккумулятор (Accumulator). Используется во всех операциях ввода-вывода, в некоторых операциях со строками и арифметических операциях. Некоторые команды (например, умножение и деление) предполагают обязательное использование данного регистра.
BX (BH/BL) – базовый регистр (Base register). Используется в индексной адресации, а также при вычислениях.
CX (CH/CL) – регистр-счётчик (Count register). Используется для управления числом повторений циклов и для операций сдвига влево и вправо. Может быть использован для вычислений.
DX (DH/DL) – регистр данных (Data register). Используется в некоторых операциях ввода-вывода, в операциях умножения и деления совместно с регистром ax.
регистры индексов
SI – регистр индекса источника (Source Index). Обычно используется в паре ds:si для выполнения операций над строками и массивами.
DI – регистр индекса приёмника (Destination Index). Пара ds:di также используется в строковых операциях и содержит адрес в строке-приёмнике.
Оба индексных регистра можно применять для расширения индексной адресации и в операциях сложения и вычитания.
регистры указателей стека
SP – регистр указателя стека (Stack Pointer). Регистр всегда показывает на вершину стека, т.е. на смещение последнего элемента в стеке, или в паре ss:sp – на адрес этого элемента.
BP – регистр указателя (Base Pointer). Предназначен для организации произвольного доступа к данным внутри стека. Может также применяться для расширения индексной адресации и в операциях сложения и вычитания
