Schetchiksg.ru

Счетчик СГ
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Регистры счетчиков команд pic

Система команд PIC-контроллеров серии PIC16C8X

Каждая команда представляет собой 14-разрядное слово, содержащее поле кода операции OPCODE и поле операндов. Система команд включает в себя команды работы с байтами, команды работы с битами, команды управления и операции с константами.

Для команд работы с байтами «f» обозначает регистр, с которым производится действие, а бит «d» определяет регистр назначения. При «d»=0 результат помещается в регистр W, при «d»=1 результат помещается в регистр «f», заданный в команде.

Для команд работы с битами «b» обозначает номер бита, участвющего в команде, а «f» — регистр, в котором этот бит расположен.

Для команд управления и операций с константами «k» обозначает 8- или 11-битовую константу или идентификатор.

Все команды выполняются в течение одного командного цикла, кроме следующих двух случаев:

  • Переход по проверке условия, если результат проверки условия — истина.
  • Изменение счетчика команд как результат выполнения команды.

В этих случаях команда выполняется за два цикла с выполнением второго цикла как NOP. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время выполнения команды составит 1 мкс. Если выполняется переход по проверке условия или в результате выполнения команды изменился счетчик команд, время выполнения этой команды при тактовой частоте 4 МГц составит 2 мкс.

Принятые обозначения

f:Адрес регистра
W:Рабочий регистр
b:Номер бита в 8-ми разрядном регистре
k:Константа
x:Не используется. Ассемблер формирует код с х=0
d:Регистр назначения:
d=0 — результат в регистре W
d=1 — результат в регистре f.
По умолчанию d=1
label:Имя метки
TOS:Вершина стека
РС:Счетчик команд
ТО:Тайм-аут
PD:Выключение питания
dest:Регистр назначения: рабочий регистр W или регистр, заданный в команде
[]:Необязательные параметры
():Содержание
—>:Присвоение
<>:Битовое поле
О :Из набора
ОбозначениеФункцияЦиклыКод командыБиты состоянияПримечания
ADDLWСложение константы и W111 111x kkkk kkkkC, DC, Z
ADDWFСложение W c f100 0111 dfff ffffC, DC, Z1, 2
ANDLWЛогическое И константы и W111 1001 kkkk kkkkZ
ANDWFЛогическое И W и f100 0101 dfff ffffZ1, 2
BCFСброс бита в регистре f101 00bb bfff ffff1, 2
BSFУстановка бита в регистре f101 01bb bfff ffff1, 2
BTFSCПропустить команду, если бит в f равен нулю1 (2)01 10bb bfff ffff3
BTFSSПропустить команду, если бит в f равен единице1 (2)01 11bb bfff ffff3
CALLВызов подпрограммы210 0kkk kkkk kkkk
CLRFСброс регистра f100 0001 1fff ffffZ2
CLRWСброс регистра W100 0001 0xxx xxxxZ
CLRWDTСброс сторожевого таймера WDT100 0000 0110 0100
COMFИнверсия регистра f100 1001 dfff ffffZ1, 2
DECFДекремент регистра f100 0011 dfff ffffZ1, 2
DECFSZДекремент f, пропустить команду, если 01 (2)00 1011 dfff ffff1, 2, 3
GOTOПереход по адресу210 1kkk kkkk kkkk
INCFИнкремент регистра f100 1010 dfff ffffZ1, 2
INCFSZИнкремент f, пропустить команду, если 01 (2)00 1111 dfff ffff1, 2, 3
IORLWЛогическое ИЛИ константы и W111 1000 kkkk kkkkZ
IORWFЛогическое ИЛИ W и f100 0100 dfff ffffZ1, 2
MOVFПересылка регистра f100 1000 dfff ffffZ1, 2
MOVLWПересылка константы в W111 00xx kkkk kkkk
MOVWFПересылка W в f100 0000 1fff ffff
NOPХолостая команда100 0000 0xx0 0000
OPTIONЗагрузка регистра OPTION100 0000 0110 0010
RETFIEВозврат из прерывания200 0000 0000 1001
RETLWВозврат из подпрограммы с загрузкой константы в W211 01xx kkkk kkkk
RETURNВозврат из подпрограммы200 0000 0000 1000
RLFСдвиг f влево через перенос100 1101 dfff ffffC1, 2
RRFСдвиг f вправо через перенос100 1100 dfff ffffC1, 2
SLEEPПереход в режим SLEEP100 0000 0110 0011
SUBLWВычитание W из константы111 110x kkkk kkkkC, DC, Z
SUBWFВычитание W из f100 0010 dfff ffffC, DC, Z1, 2
SWAPFОбмен местами тетрад вf100 1110 dfff ffff1, 2
TRISЗагрузка регистра TRIS100 0000 0110 0fff
XORLWИсключающее ИЛИ константы и W111 1010 kkkk kkkkZ
XORWFИсключающее ИЛИ W и f100 0110 dfff ffff1, 2

Примечание:

  1. Если модифицируется регистр ввода/вывода (например, MOVF PORTB,1), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится «1», а внешнее устройство формирует на этом выводе «0», то в этом разряде данных будет записан «0».
  2. Если операндом команды является содержимое регистра TMRO (и, если допустимо, d=1), то предварительный делитель, если он подключен к TMRO, будет сброшен.
  3. Если в результате выполнения команды изменяется счетчик команд, или выполняется переход по проверке условия, то команда выполняется за два цикла. Второй цикл выплняется как NOP.
Читайте так же:
Допустимая высота установки счетчиков

Питание, система команд и архитектура МК AVR (Лекция)

1. Режимы пониженного энергопотребления

2. Система команд AVR

3. Архитектура микроконтроллеров AVR

1. Режимы пониженного энергопотребления

AVR микроконтроллеры могут быть переведены программным путем в один из шести режимов пониженного энергопотребления.

  • Режим холостого хода (IDLE), в котором прекращает работу только процессор и фиксируется содержимое памяти данных, а внутренний генератор синхросигналов, таймеры, система прерываний и WATCHDOG-таймер продолжают функционировать.
  • Режим микропотребления (Power Down), в котором сохраняется содержимое регистрового файла, но останавливается внутренний генератор синхросигналов. Выход из Power Down возможен либо по общему сбросу микроконтроллера, либо по сигналу (уровень) от внешнего источника прерывания. При включенном WATCHDOG-таймере ток потребления в этом режиме составляет около 60. 80 мкА, а при выключенном — менее 1 мкА для всех типов AVR. Вышеприведенные значения справедливы для величины питающего напряжения 5 В.
  • Режим сохранения энергии (Power Save), который реализован только у тех AVR, которые имеют в своем составе систему реального времени. В основном, режим Power Save идентичен Power Down, но здесь допускается независимая работа дополнительного таймера/счетчика RTC. Выход из режима Power Save возможен по прерыванию, вызванному или переполнением таймера/счетчика RTC, или срабатыванием блока сравнения этого счетчика. Ток потребления в этом режиме составляет 6. 10 мкА при напряжении питания 5 В на частоте 32,768 кГц.
  • Режим подавления шума при работе аналого-цифрового преобразователя (ADC Noise Reduction). Как уже отмечалось, в этом режиме останавливается процессорное ядро, но разрешена работа АЦП, двухпроводного интерфейса I2C и сторожевого таймера.
  • Основной режим ожидания (Standby). Идентичен режиму Power Down, но здесь работа тактового генератора не прекращается. Это гарантирует быстрый выход микроконтроллера из режима ожидания всего за 6 тактов генератора.
  • Дополнительный режим ожидания (Extended Standby). Идентичен режиму Power Save, но здесь работа тактового генератора тоже не прекращается. Это гарантирует быстрый выход микроконтроллера из режима ожидания всего за 6 тактов генератора.

Микроконтроллеры AVR mega64, mega103 и mega128 имеют еще одну примечательную архитектурную особенность, позволяющую значительно снизить энергопотребление всего кристалла в целом, когда в процессе работы возникают вынужденные паузы ожидания. В этом случае целесообразно уменьшить ток потребления центрального процессора и периферийных устройств как в активном режиме, так и в режиме холостого хода, понизив основную тактовую частоту микроконтроллера. Для этой цели на кристалле размещен специальный предделитель, позволяющий делить основную тактовую частоту на целое число в диапазоне от 2 до 129. Включение/выключение данной функции осуществляется одной короткой командой в программе.

AVR функционируют в широком диапазоне питающих напряжений от 1,8 до 6,0 Вольт. Температурные диапазоны работы микроконтроллеров AVR — коммерческий (0С. 70С) и индустриальный (-40С. +85С). К сожалению, корпорация Atmel не выпускает и не планирует выпускать AVR для работы в автомобильном (-40С. +125С) и военном (-55С. +125С) температурных диапазонах.


Рис. 2. Структурная схема AVR

С точки зрения программиста AVR представляет собой 8-разрядный RISC микроконтроллер, имеющий быстрый Гарвардский процессор, память программ, память данных, порты ввода/вывода и различные интерфейсные схемы. Структурная схема микроконтроллера приведена на рис. 2. Гарвардская архитектура AVR реализует полное логическое и физическое разделение не только адресных пространств, но и информационных шин для обращения к памяти программ и к памяти данных, причем способы адресации и доступа к этим массивам памяти также различны. Подобное построение уже ближе к структуре цифровых сигнальных процессоров и обеспечивает существенное повышение производительности. Центральный процессор работает одновременно как с памятью программ, так и с памятью данных; разрядность шины памяти программ расширена до 16 бит. Следующим шагом на пути увеличения быстродействия AVR является использование технологии конвейеризации, вследствие чего цикл «выборка — исполнение» команды заметно сокращен. Например, у микроконтроллеров семейства MCS51 короткая команда выполняется за 12 тактов генератора (1 машинный цикл), в течение которого процессор последовательно считывает код операции и исполняет ее. В PIC-контроллерах фирмы Microchip, где уже реализован конвейер, короткая команда выполняется в течение 8 периодов тактовой частоты (2 машинных цикла). За это время последовательно дешифрируется и считывается код операции, исполняется команда, фиксируется результат и одновременно считывается код следующей операции (одноуровневый конвейер). Поэтому в общем потоке команд одна короткая команда реализуется за 4 периода тактовой частоты или за один машинный цикл.

Читайте так же:
Батарейка для счетчика карат

В микроконтроллерах AVR тоже используется одноуровневый конвейер при обращении к памяти программ и короткая команда в общем потоке выполняется, как и в PIC-контроллерах, за один машинный цикл. Главное же отличие состоит в том, что этот цикл у AVR составляет всего один период тактовой частоты. Для сравнения, на рис. 3 приведены временные диаграммы при выполнении типовой команды для различных микроконтроллерных платформ.

Система команд AVR весьма развита и насчитывает до 133 различных инструкций. Почти все команды имеют фиксированную длину в одно слово (16 бит), что позволяет в большинстве случаев объединять в одной команде и код операции, и операнд(ы). Лишь немногие команды имеют размер в 2 слова (32 бит) и относятся к группе команд вызова процедуры CALL, длинных переходов в пределах всего адресного пространства JMP, возврата из подпрограмм RET и команд работы с памятью программ LPM.

Различают пять групп команд AVR: условного ветвления, безусловного ветвления, арифметические и логические операции, команды пересылки данных, команды работы с битами. В последних версиях кристаллов AVR семейства «mega» реализована функция аппаратного умножения, что придает новым микроконтроллерам еще больше привлекательности с точки зрения разработчика.

3. Архитектура микроконтроллеров AVR

Файл регистров быстрого доступа, содержит 32 8-разрядных рабочих регистра общего назначения связанных непосредственно с ALU. За один тактовый цикл из файла регистров выбираются два операнда, выполняется операция и результат вновь возвращается в файл регистров.

Шесть из 32 регистров могут быть использованы как три 16-разрядных регистра указателя косвенной адресации адресного пространства данных, обеспечивающие эффективное вычисление адресов. Один из этих указателей адреса используется, также, как указатель адреса для функции непрерывного просмотра таблиц. Эти 16-разрядные дополнительные регистры обозначаются X-регистр, Y-регистр и Z-регистр.

ALU поддерживает арифметические и логические операции между регистрами или между константой и регистром. Выполняются в ALU и операции с отдельными регистрами.

На рисунке показана AVR расширенная RISC архитектура микроконтроллеров ATmega603/103.

Рис. 5. Расширенная RISC архитектура микроконтроллеров ATmega603/103

В дополнение к операциям с регистрами, регистровый файл может использоваться и для обычной адресации памяти. Это объясняется тем, что файл регистров располагается по 32 самыми младшими адресами пространства данных, и к ним можно обращаться как к обычным ячейкам памяти.

Пространство памяти I/O содержит 64 адреса периферийных функций CPU таких как: регистры управления, таймеры/счетчики, аналого-цифровые преобразователи и другие I/O функции. К памяти I/O можно обращаться непосредственно или как к ячейкам пространства памяти соответствующим адресам регистра файлов $20 — $5F.

В микроконтроллерах AVR использованы принципы Гарвардской архитектуры — отдельные память и шины для программ и данных. При работе с памятью программ используется одноуровневый конвейер — в то время, как одна команда выполняется, следующая команда выбирается из памяти программ, Такой прием позволяет выполнять команду в каждом тактовом цикле. Памятью программ является внутрисистемно программируемая Flash память. За малым исключением AVR команды имеют формат одного 16-разрядного слова, в связи с чем каждый адрес памяти программ содержит одну 16-разрядную команду.

В процессе обработки прерываний и вызовов подпрограмм адрес возврата счетчика команд (PC) сохраняется в стеке. Стек размещается в SRAM данных и, следовательно размер стека ограничен только общим размером SRAM и уровнем ее использования. Все пользовательские программы в подпрограммах возврата (прежде, чем подпрограммы или прерывания будут выполняться) должны инициализировать указатель стека (SP). 16-разрядный указатель стека, с возможностью чтения/записи располагается в пространстве I/O.

AVR архитектура поддерживает пять различных режимов адресации 4000 байт SRAM данных. Гибкий модуль обработки прерываний имеет в пространстве I/O свой управляющий регистр с дополнительным битом разрешения глобального прерывания в регистре статуса. Все прерывания имеют свои векторы прерывания в таблице векторов прерывания, располагаемой в начале памяти программ. Приоритеты прерываний соответствуют положению векторов прерываний — прерывание с наименьшим адресом вектора имеет наивысший приоритет.

По разнообразию и количеству реализованных инструкций AVR больше похожи на CISC, чем на RISC процессоры. Например, у PIC-контроллеров система команд насчитывает до 75 различных инструкций, а у MCS51 она составляет 111. В целом, прогрессивная RISC архитектура AVR в сочетании с наличием регистрового файла и расширенной системы команд позволяет в короткие сроки создавать работоспособные программы с эффективным кодом как по компактности реализации, так и по скорости выполнения.

3.1. Регистровый файл быстрого доступа

Следующая отличительная черта архитектуры микроконтроллеров AVR — регистровый файл быстрого доступа, структурная схема которого показана на рис. 4. Каждый из 32-х регистров общего назначения длиной 1 байт непосредственно связан с арифметико-логическим устройством (ALU) процессора. Другими словами, в AVR существует 32 регистра — аккумулятора (сравните, например, с MCS51). Это обстоятельство позволяет в сочетании с конвейерной обработкой выполнять одну операцию в ALU за один машинный цикл. Так, два операнда извлекаются из регистрового файла, выполняется команда и результат записывается обратно в регистровый файл в течение только одного машинного цикла.

Читайте так же:
Где находиться номер счетчика меркурий

Рис. 3. Сравнительная характеристика некоторых микропроцессорных платформ

Шесть из 32-х регистров файла могут использоваться как три 16-разрядных указателя адреса при косвенной адресации данных. Один из этих указателей (Z Pointer) применяется также для доступа к данным, записанным в памяти программ микроконтроллера. Использование трех 16-битных указателей (X, Y и Z Pointers) существенно повышает скорость пересылки данных при работе прикладной программы.


Рис. 4. Регистровый файл

Регистровый файл занимает младшие 32 байта в общем адресном пространстве SRAM AVR. Такое архитектурное решение позволяет получать доступ к быстрой «регистровой» оперативной памяти микроконтроллера двумя путями — непосредственной адресацией в коде команды к любой ячейке и другими способами адресации ячеек SRAM.

В технической документации фирмы Atmel это полезное свойство носит название «быстрое контекстное переключение» и является еще одной отличительной особенностью архитектуры AVR, повышающей эффективность работы микроконтроллера и его производительность. Особенно заметно данное преимущество при реализации процедур целочисленной 16-битной арифметики, когда исключаются многократные пересылки между различными ячейками памяти данных при обработке арифметических операндов в ALU.

Регистры счетчиков команд pic

РЕГИСТРЫ Z80
Регистры данных и аккумулятор

Микропроцессор Z80, в отличие от 18080, работает с двумя наборами
регистров — основным и альтернативным. Оба набора состоят из семи
8-разрядных регистров данных и флагового регистра. Регистры основного
набора обозначаются буквами А, В, С, D, Е, Н, L и F (флаговый). Регистры
альтернативного набора соответственно — А’, В’, С D Е Н L’ и F. Для
пользователя эти наборы совершенно идентичны, и знак’ (апостроф) озна-
чает лишь то, что в данный момент регистр не является активным. С
помощью специальных команд можно переключать работу процессора с
одного набора регистров на другой. Но выяснить, какой из наборов активен
в данный момент, невозможно.

Для выполнения многих команд обрабатываемые данные должны
быть занесены в специальный регистр — аккумулятор А-

Команды, обрабатывающие 16-разрядные числа, используют пары ре-
гистров в следующих сочетаниях: ВС, DE, HL, AF и, соответственно, ВС’, DE’,
HL’, AF’. При этом в регистры В, D, Н, А, В’, D’, Н А» записывается старший
байт числа, а в С, Е, L, F, С’, Е L’ и F’ — младший. Спаренные регистры можно
использовать, например, для хранения и обработки адресов ячеек памяти.

Выполнив очередную команду, процессор должен знать, откуда ему
взять следующую. За этим следит 16-разрядный регистр счетчика команд PC.
При последовательном выполнении программы после считывания из памяти
каждого байта команды значение PC увеличивается на единицу. Если коман-
да требует от процессора перейти не к следующей, а какой-либо другой
ячейке памяти (например, команда вызова подпрограммы), в PC записыва-
ется адрес этой ячейки.

Важной особенностью Z80 является возможность обращаться к ячей-
кам памяти, указывая смещение их адреса относительно содержимого 16-
разрядных индексных регистров IX и IY. Смещение может быть задано
числом в пределах -128. + 127.

16-разрядный регистр указателя стека SP содержит адрес вершины
с/лека. Как известно, стек — это специальная область памяти, предназначен-
ная для временного хранения данных. В Z80 он организован по принципу
LIFO 1 — помещенные в стек одно за другим несколько чисел извлекаться из
стека будут в обратной последовательности. Особенностью Z80 является то,
что стек «растет» в сторону уменьшения адресов. При каждой записи в стек
значение регистра SP уменьшается на 2, а при извлечении числа увеличи-
вается на 2. «Общение» со стеком обычно происходит посредством регист-
ровых пар. В стеке также автоматически сохраняется адрес возврата при
вызове подпрограмм.

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

После выполнения ряда команд в соответствии с результатом опера-
ции изменяется содержимое флагового регистра F (рис. 11). Флагом называется
отдельный бит этого регистра. Флаг считается уста- . ..

новленным, если в соответствующем бите запи- | S | Z х|Н | х P/V 1N1С |

сана единица, и сброшенным, если записан ноль. 7*543 7 10
Значимыми являются 6 из 8 битов регистра F:

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

Z (zero) — флаг нуля. Устанавливается, если результат операции равен
нулю;

Читайте так же:
Подходит срок поверки счетчика что делать

P/V (parity/overflow) флаг четяос/пи/лерелоляелия. В логических опе-
рациях устанавливается при получении четного результата, в ариф-
метических — при переполнении (изменении знака) операнда;

CY (carry) — флаг переноса. Устанавливается, если в итоге выполнения
арифметических операций произошел перенос либо заем старшего
бита;

N (negative) — флаг отрицательного результата. Устанавливается при
получении отрицательного результата арифметической операции;

Н (half-carry) — флаг вспомогательного переноса. Устанавливается, если про-
изошел перенос (заем) в 4-й бит аккумулятора. Используется при прове-
дении двоично-десятичной коррекции при работе с BCD-арифметикой*;

S (sing) — флаг вычитания. Устанавливается, если предыдущей коман-
дой было вычитание. В BCD-арифметике помогает определить тип
предыдущей операции.

Регистр вектора прерываний I используется во 2-м режиме обработки
прерываний. Подробно о нем будет рассказано в разделе, посвященном
прерываниям.

Регистр регенерации динамической памяти R обслуживает в основном
аппаратные потребности компьютера, однако он все же может использовать-
ся и для программных целей, например, при написании процедур, генери-
рующих случайные числа. Младшие семь разрядов этого регистра увеличи-
ваются на единицу после выполнения очередной команды (точнее — очеред-
ного цикла) микропроцессора, старший разряд аппаратно не используется.

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

Регистр процессора — блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора; используется самим процессором и большой частью недоступен программисту: например, при выборке из памяти очередной команды она помещается в регистр команд (англ.), к которому программист обратиться не может.

Имеются также регистры, которые, в принципе, программно доступны, но обращение к ним осуществляется из программ операционной системы, например, управляющие регистры и теневые регистры дескрипторов сегментов. Этими регистрами пользуются в основном разработчики операционных систем.

Существуют также так называемые регистры общего назначения (РОН), представляющие собой часть регистров процессора, использующихся без ограничения в арифметических операциях, но имеющие определенные ограничения, например, в строковых РОН, не характерные для эпохи мейнфреймов типа IBM/370 [1] стали популярными в микропроцессорах архитектуры X86 — Intel 8085, Intel 8086 и последующих [2] .

Специальные регистры [3] содержат данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д.

Часть специальных регистров принадлежит устройству управления, которое управляет процессором путём генерации последовательности микрокоманд.

Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объём оперативной памяти намного превосходит суммарный объём регистров (объём среднего модуля оперативной памяти сегодня составляет 1—4 гигабайт [4] , суммарная «ёмкость» регистров общего назначения/данных для x86-процессоров, например Intel 80386 и более новых, 8 регистров по 4 байта = 32 байта; в режиме x86_64 — 16 по 8 байт = 128 байт и некоторое количество векторных регистров).

Содержание

  • 1 Некоторые примеры
    • 1.1 Архитектура x86
    • 1.2 Счётчик команд
      • 1.2.1 IP
      • 1.2.2 EIP
      • 1.2.3 RIP
  • 2 См. также
  • 3 Примечания
  • 4 Ссылки

Некоторые примеры [ править ]

В таблице показано количество регистров общего назначения в нескольких распространенных архитектурах микропроцессоров. Стоит отметить, что в некоторых архитектурах использование отдельных регистров может быть осложнено. Так, в SPARC и MIPS регистр номер 0 не сохраняет информацию и всегда считывается как 0, а в процессорах x86 с регистром ESP (указатель на стек) могут работать лишь некоторые команды.

Архитектура x86 [ править ]

IP (англ. Instruction Pointer ) — регистр, указывающий на смещение (адрес) инструкций в сегменте кода (1234:0100h сегмент/смещение).

IP — 16-битный (младшая часть EIP)

EIP — 32-битный аналог (младшая часть RIP)

RIP — 64-битный аналог

Сегментные регистры — регистры, указывающие на сегменты.

CS (англ. Code Segment ), DS (англ. Data Segment ), SS (англ. Stack Segment ), ES (англ. Extra Segment ), FS, GS

В реальном режиме работы процессора сегментные регистры содержат адрес начала 64Kb сегмента, смещенный вправо на 4 бита.

В защищенном режиме работы процессора сегментные регистры содержат селектор сегмента памяти, выделенного ОС.

CS — указатель на кодовый сегмент. Связка CS:IP (CS:EIP/CS:RIP — в защищенном/64-битном режиме) указывает на адрес в памяти следующей команды.

Регистры данных — служат для хранения промежуточных вычислений.

RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8 — R15 — 64-битные

EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D — R15D — 32-битные (extended AX)

AX (англ. Accumulator ), CX (англ. Count Register ), DX (англ. Data Register ), BX (англ. Base Register ), SP (англ. Stack Pointer ), BP (англ. Base Pointer ), SI (англ. Source Index ), DI (англ. Destination Index ), R8W — R15W — 16-битные

Читайте так же:
Град московский поверка счетчиков

AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B — R15B — 8-битные (половинки 16-битных регистров)

например, AH — high AX — старшая половинка 8 бит

AL — low AX — младшая половинка 8 бит

RAXRCXRDXRBX
EAXECXEDXEBX
AXCXDXBX
AHALCHCLDHDLBHBL
RSPRBPRSIRDIRx
ESPEBPESIEDIRxD
SPBPSIDIRxW
SPLBPLSILDILRxB

где x — 8..15.
Регистры RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, Rx, RxD, RxW, RxB, SPL, BPL, SIL, DIL доступны только в 64-битном режиме работы процессора.

Регистр флагов FLAGS (16 бит) / EFLAGS (32 бита) / RFLAGS (64 бита) — содержит текущее состояние процессора.

Системные регистры GDTR, LDTR и IDTR введены в процессорах начиная с Intel286 и предназначены для хранения базовых адресов таблиц дескрипторов — важнейших составляющих системной архитектуры при работе в защищенном режиме.

Регистр GDTR содержит 32-битный (24-битный для Intel286) базовый адрес и 16-битный предел глобальной таблицы дескрипторов (GDT).

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

Регистр IDTR содержит 32-битный (24-битный для Intel286) базовый адрес и 16-битный предел таблицы дескрипторов прерываний (IDT). В реальном режиме может быть использован для изменения местоположения таблицы векторов прерываний.

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

Регистром называется функциональный узел, осуществляющий приём, хранение и передачу информации. Регистры состоят из группы триггеров, обычно D. По типу приёма и выдачи информации различают 2 типа регистров:

  • С последовательным приёмом и выдачей информации — сдвиговые регистры.
  • С параллельным приёмом и выдачей информации — параллельные регистры.

Сдвиговые регистры представляют собой последовательно соединённую цепочку триггеров. Основной режим работы — сдвиг разрядов кода от одного триггера к другому на каждый импульс тактового сигнала.

По назначению регистры различаются на:

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

Счётчик команд [ править ]

IP [ править ]

IP (англ. Instruction Pointer ) — регистр, содержащий адрес-смещение следующей команды, подлежащей исполнению, относительно кодового сегмента CS в процессорах семейства x86.

Регистр IP связан с CS в виде CS:IP, где CS является текущим кодовым сегментом, а IP — текущим смещением относительно этого сегмента.

Регистр IP является 16-разрядным регистром-указателем. Кроме него, в состав регистров этого типа входят SP (англ. Stack Pointer — указатель стека) и BP (англ. Base Pointer — базовый указатель).

Например, CS содержит значение 2CB5[0]H , в регистре IP хранится смещение 123H .

Адрес следующей инструкции, подлежащей исполнению, вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:

2CB50H + 123H = 2CC73H

Таким образом, адрес следующей инструкции для исполнения равен 2CC73H .

При выполнении текущей инструкции процессор автоматически изменяет значение в регистре IP, в результате чего регистровая пара CS:IP всегда указывает на следующую подлежащую исполнению инструкцию.

EIP [ править ]

Начиная с процессора 80386 была введена 32-разрядная версия регистра-указателя — EIP (англ. Extended Instruction Pointer ). В данном случае IP является младшей частью этого регистра (первые 16 разрядов). Принцип работы EIP в целом схож с работой регистра IP. Основная разница состоит в том, что в защищённом режиме, в отличие от реального режима, регистр CS является селектором (селектор указывает не на сам сегмент в памяти, а на дескриптор сегмента в таблице дескрипторов).

RIP [ править ]

В 64-разрядных процессорах используется свой регистр-указатель инструкций — RIP.

Младшей частью этого регистра является регистр EIP.

На основе RIP в 64-разрядных процессорах введён новый метод адресации RIP-relative. В остальном работа RIP аналогична работе регистра EIP.

голоса
Рейтинг статьи
Ссылка на основную публикацию