русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2013-12-23; просмотров: 1606; Нарушение авторских прав


Адресация байтов и слов

Многие процессоры, имеющие разрядность 16 или 32, способны адре­совать не только целое слово в памяти (16-разрядное или 32-разрядное), но и отдельные байты. Каждому байту в каждом слове при этом отводится свой адрес.

Так, в случае 16-разрядных процессоров все слова в памяти (16-раз­рядные) имеют четные адреса. А байты, входящие в эти слова, могут иметь как четные адреса, так и нечетные.

Например, пусть 16-разрядная ячейка памяти имеет адрес 23420, и в ней хранится код 2А5Е (рис. 3.9).

Рис. 3.9.Адресация слов и байтов.

При обращении к целому слову (с содержимым 2А5Е) процессор выс­тавляет адрес 23420. При обращении к младшему байту этой ячейки (с со­держимым 5Е) процессор выставляет тот же самый адрес 23420, но ис­пользует команду, адресующую байт, а не слово. При обращении к старшему байту этой же ячейки (с содержимым 2А) процессор выставляет адрес 23421 и использует команду, адресующую байт. Следующая по порядку 16-разрядная ячейка памяти с содержимым 487F будет иметь адрес 23422, то есть опять же четный. Ее байты будут иметь адреса 23422 и 23423.

Для различия байтовых и словных циклов обмена на магистрали в шине управления предусматривается специальный сигнал байтового обмена. Для работы с байтами в систему команд процессора вводятся специальные ко­манды или предусматриваются методы байтовой адресации.

Как уже упоминалось, внутренние регистры процессора представ­им ют собой сверхоперативную память небольшого размера, которая предназначена для временного хранения служебной информации или данных. Количество регистров в разных процессорах может быть от 6—8 до нескольких десятков. Регистры могут быть универсальными и специализированными. Специализированные регистры, которые при­сутствуют в большинстве процессоров, — это регистр-счетчик команд, регистр состояния (PSW), регистр указателя стека. Остальные регис­тры процессора могут быть как универсальными, так и специализи­рованными.



Например, в 16-разрядном процессоре Т-11 фирмы DEC было 8 реги­стров общего назначения (РОН) и один регистр состояния. Все регистры имели по 16 разрядов. Из регистров общего назначения один отводился под счетчик команд, другой — под указатель стека. Все остальные регист­ры общего назначения полностью взаимозаменяемы, то есть имеют уни­версальное назначение, могут хранить как данные, так и адреса (указате­ли), индексы и т.д. Максимально допустимый объем памяти для данного процессора составлял 64 Кбайт (адрес памяти 16-разрядный).

В 16-разрядном процессоре MC68000 фирмы Motorola было 19 регист­ров: 16-разрядный регистр состояния, 32-разрядный регистр счетчика ко­манд, 9 регистров адреса (32-разрядных) и 8 регистров данных (32-раз­рядных). Два регистра адреса отведены под указатели стека. Максимально допустимый объем адресуемой памяти — 16 Мбайт (внешняя шина адреса 24-разрядная). Все 8 регистров данных взаимозаменяемы. 7 регистров ад­реса — тоже взаимозаменяемы.

В 16-разрядном процессоре Intel 8086, который стал базовым в линии процессоров, используемых в персональных компьютерах, реализован принципиально другой подход. Каждый регистр этого процессора имеет свое особое назначение, и заменять друг друга регистры могут только ча­стично или же не могут вообще. Остановимся на особенностях этого про­цессора подробнее.

Процессор 8086 имеет 14 регистров разрядностью по 16 бит. Из них четыре регистра (АХ, ВХ, СХ, DX) — это регистры данных, каждый из ко­торых помимо хранения операндов и результатов операций имеет еще и свое специфическое назначение:

• регистр АХ — умножение, деление, обмен с устройствами ввода/вы­
вода (команды ввода и вывода);

• регистр ВХ — базовый регистр в вычислениях адреса;

• регистр СХ — счетчик циклов;

• регистр DX — определение адреса ввода/вывода.

Для регистров данных существует возможность раздельного использо­вания обоих байтов (например, для регистра АХ они имеют обозначения AL — младший байт и АН — старший байт).

Следующие четыре внутренних регистра процессора — это сегментные регистры, каждый из которых определяет положение одного из рабочих сегментов (рис. 3.10):

• регистр CS (Code Segment) соответствует сегменту команд, испол­
няемых в данный момент;

• регистр DS (Data Segment) соответствует сегменту данных, с кото­
рыми работает процессор;

• регистр ES (Extra Segment) соответствует дополнительному сегменту
данных;

• регистр SS (Stack Segment) соответствует сегменту стека.

Рис. 3.10.Сегменты команд, данных и стека в памяти.

В принципе, все эти сегменты могут и перекрываться для оптимально­го использования пространства памяти. Например, если программа зани­мает только часть сегмента, то сегмент данных может начинаться сразу после завершения работы программы (с точностью 16 байт), а не после окончания всего сегмента программы.

Следующие пять регистров процессора (SP — Stack Pointer, BP — Base Pointer, SI — Source Index, DI — Destination Index, IP —Instruction Pointer) служат указателями (то есть определяют смещение в пределах сегмента). Например, счетчик команд процессора образуется парой регистров CS и IР, а указатель стека — парой регистров SP и SS. Регистры SI, DI используются в строковых операциях, то есть при последовательной обработке не­скольких ячеек памяти одной командой.

Последний регистр FLAGS — это регистр состояния процессора (PSW). Из его 16 разрядов используются только девять (рис. 3.11): CF (Carry Flag) — флаг переноса при арифметических операциях, PF (Parity Flag) — флаг четности результата, AF (Auxiliary Flag) — флаг дополнительного переноса, ZF (Zero Flag) — флаг нулевого результата, SF (Sign Flag) — флаг знака (со­впадает со старшим битом результата), TF (Trap Flag) — флаг пошагового режима (используется при отладке), IF (Interrupt-enable Flag) — флаг разрешения аппаратных прерываний, DF (Direction Flag) — флаг направле­ния при строковых операциях, OF (Overflow Flag) — флаг переполнения.

15 14 13 12 11 10 9 8 7 6 5432 1 О

Рис. 3.11.Регистр состояния процессора 8086.

Биты регистра состояния устанавливаются или очищаются в зависи­мости от результата исполнения предыдущей команды и используются не­которыми командами процессора. Биты регистра состояния могут также устанавливаться и очищаться специальными командами процессора (о си­стеме команд процессора будет рассказано в следующем разделе).

Во многих процессорах выделяется специальный регистр, называемый аккумулятором (то есть накопителем). При этом,\ак правило, только этот регистр-аккумулятор может участвовать во всех операциях, только через него может производиться взаимодействие с устройствами ввода/вывода. Иногда в него же помещается результат любой выполненной команды (в этом случае говорят даже об “аккумуляторной” архитектуре процессора). Например, в процессоре 8086 регистр данных АХ можно считать своеобразным аккуму­лятором, так как именно он обязательно участвует в командах умножения и деления, а также только через него можно пересылать данные в устройство ввода/вывода и из устройства ввода/вывода. Выделение специального регистра-аккумулятора упрощает структуру процессора и ускоряет пересылки кодов внутри процессора, но в некоторых случаях замедляет ра­боту системы в целом, так как весь поток информации должен пройти через один регистр-аккумулятор. В случае, когда несколько регистров процессо­ра полностью взаимозаменяемы, таких проблем не возникает.


Контрольные вопросы

 



<== предыдущая лекция | следующая лекция ==>
Сегментирование памяти | Процессорное ядро и память микроконтроллеров.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.