Сегментный регистр адресует данные в области памяти, называемой текущим сегментом. Процессоры фирмы Intel, применяемые в IBM PC – совместимых компьютерах, обладают различными возможностями адресации.
Регистр CS. Имеет начальный адрес сегмента, содержащего код программы. Сумма содержимого этого регистра со значением смещения в указателе инструкций (instruction pointer, IP) указывает адрес инструкции, которая должна быть передана для исполнения. Для обычных целей программирования прямо ссылаться на этот регистр не нужно.
Регистр DS. Содержит начальный адрес сегмента данных программы. Инструкции используют этот адрес для поиска данных. Этот адрес, сложенный со смещением, заданным в инструкции, дает ссылку на определенную ячейку памяти, содержащую требуемые данные.
Регистр SS. Позволяет реализовывать в памяти стек, который программа использует для временного хранения адресов и данных. Регистр SS хранит начальный адрес сегмента стека программы. Этот адрес в сумме со смещением, хранимым в указателе стека (stack pointer, SP), указывает на текущее слово в стеке. Для обычных целей программирования прямо ссылаться на этот регистр не нужно.
Регистр ES. Используется некоторыми строковыми (работающими с символьными данными) операциями для управления адресацией памяти. В этом контексте сегментный регистр ES связан с регистром индекса (index, DI). Если программа требует использования сегмента ES, вы должны проинициализировать регистр соответствующим значением начального адреса.
Регистры указателей – это 32-разрядные регистры EIP, ESP, EBP; их младшие 16 разрядов – соответственно IP, SP, BP. Указатель инструкции (instruction pointer, IP). 16-разрядный регистр IP содержит смещение адреса следующей инструкции, подлежащей исполнению. IP связан с CS (как CS:IP), то есть регистр IP указывает текущую инструкцию внутри текущего кодового сегмента. Обычно к IP не обращаются непосредственно в программах, но его значение можно изменять, например, в программе DEBUG с целью тестирования выполнения программы.
В процессоре 80386 впервые появился расширенный указатель инструкции – 32-разрядный регистр EIP.
В следующем примере CS содержит 39B4[0]H. IP содержит 514H. Чтобы определить следующую подлежащую исполнению инструкцию, процессор суммирует адрес CS со смещением в IP.
Достарыңызбен бөлісу: |