О сегментах. Тема 1.7 Регистры микропроцессора. 1.Универсальные регистры. 2.Регистры смещений или указателей и индексов. 3. Регистр флагов
О сегментах. Сегментный регистр хранит стартовый (начальный) адрес памяти, определенный операционной системой для хранения команд программы (CS), переменных и констант (DS) и стека (SS) – для временного хранения результатов обработки, параметров вызываемых из программы процедур и адресов возврата из вызываемых процедур. На приведенном ниже рисунке графически показана связь сегментных регистров и соответствующих им сегментов. Рисунок отражает принципиальную связь между сегментными регистрами и сегментами программы, откуда следует, что программные сегменты не обязательно располагаются в оперативной памяти в порядке, отображенном на рисунке. Не стоит забывать, что в программе могут задаваться и дополнительные сегменты данных (такие, как ES, а в процессорах 80386 и выше еще и FS и GS), но приведенные 3 сегмента программы присутствуют в любой программе. Сегмент начинается с границы параграфа (адреса, нацело делящегося на 16, с четырьмя двоичными нулями в младших разрядах значения адреса). Ячейки памяти внутри сегмента нумеруются относительно стартового адреса сегмента. Расстояние в байтах от начала сегмента до любой другой ячейки внутри этого сегмента, называется смещением. Имена сегментных регистров строго зарезервированы, и поэтому при появлении этих имен в программе процессор обращается к своей внутренней памяти.
Оперативное запоминающее устройство
DS
Рисунок 4. 3. Связь сегментов и сегментных регистров.
Регистр CS содержит адрес первой команды программы. Сумма содержимого этого регистра со значением смещения в указателе инструкций – регистре IP – дает адрес команды программы, которая должна быть передана следующей для исполнения. Регистр DS содержит адрес первой переменной или константы, объявленной в программе. Команды используют этот регистр для поиска значений операндов, участвующих в операциях обработки. Этот адрес, сложенный со смещением переменной, дает ссылку на определенную ячейку со значениями исходных данных, промежуточных результатов или выходных данных. Регистр SS позволяет реализовать в памяти стек, который программа использует для временного хранения адресов и данных. Адрес из этого регистра складывается со смещением, хранимым в указателе стека SP, и суммарное значение указывает на текущее слово в стеке. Регистр ES используется в программах, обрабатывающих строковые последовательности. Если Ваша программа предполагает такую обработку, Вы должны проинициализировать этот регистр соответствующим значением (аналогично принудительной инициализации основного сегмента данных DS). Описанные выше правила использования стековых регистров процессор применяет автоматически. Как правило, для целей программирования ссылаться на сегментные регистры не нужно.
Тема 1. 7 Регистры микропроцессора 1. Универсальные регистры 2. Регистры смещений или указателей и индексов 3. Регистр флагов 1. Универсальные регистры Наиболее часто программист оперирует регистрами общего назначения (РОН). К ним относятся регистры AX, BX, CX, DX, а в процессорах, начиная с Intel 80386 и выше – EAX, EBX, ECX, EDX. Регистры ЕхХ – 32-разрядные, хХ – 16-разрядные. Каждый из последних в свою очередь состоит из двух 8-битовых регистров xL и xH. Нижеприведенный рисунок иллюстрирует общую структуру РОН на примере регистра АХ.
AX
EAX Рисунок 4. 4. Общая структура РОН Каждый из этих регистров может использоваться для временного хранения любых данных, при этом можно работать с каждым регистром целиком, а можно отдельно с каждой его половиной: - регистры АН, ВН, СН, DH - старшие байты (Hight); - регистры AL, BL, CL, DL - младшие байты (Low) соответствующих 2-ух байтовых регистров. Регистры AL, АН образуют соответственно младший и старший байты условного регистра АХ. Всеми этими регистрами можно пользоваться при программировании, но ряд команд использует их неявным способом. Например: регистр АХ, аккумулятор, используется при умножении и делении слов, в операциях ввода-вывода и в некоторых операциях над строками; регистр AL используется при выполнении аналогичных операций над байтами, а также при преобразовании десятичных чисел и выполнении над ними арифметических операций; регистр АН используется при умножении и делении байтов; регистр ВХ, базовый регистр, часто используется при адресации данных в памяти; регистр СХ, счетчик, используется как счетчик числа повторений цикла и в качестве номера позиции элемента данных при операциях над строками. Регистр CL используется как счетчик при операциях сдвига и циклического сдвига на несколько битов; регистр DX, регистр данных, используется при умножении и делении слов. Кроме этого используется в операциях ввода-вывода как номер порта.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|