Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Регистры IBM PC XT
Регистры очень важны для любого процессора. Адресов у них нет, но зато есть имена. Они считаются быстрой памятью, поскольку находятся в составе самого процессора.
Первые модели 8086/8088 имели всего 14 16-разрядных регистров. A Pentium II, например, содержит уже гораздо большее число регистров, большинство из них 64-разрядные. Кроме того, есть регистры, обеспечивающие конвейерную обработку машинных команд, которые программам НЕ видны, а видны только самому хозяину процессору.
В архитектуру IBM PC в самом начале были заложены возможности для развития. И все следующие семейства процессоров их расширяли (extension расширение). Вначале появились возможности для 32-разрядного программирования (i386) это расширение 16-разрядного программирования, затем расширение команд сопроцессора в виде дополнительного набора команд ММХ (Multimedia Extensions), далее опять расширение, на этот раз набора команд ММХ команды SSE (Streaming SIMD Extension) и так далее, до бесконечности.
Чтобы все это понимать, сначала разберемся с 14 базовыми 16-разрядными регистрами. Регистры в старших семействах их расширяют. В некоторых случаях добавляются свои, специфические регистры, реализующие машинные команды или режимы, которые в младших моделях отсутствовали.
Регистры общего назначения
Регистры общего назначения (РОН) являются основными рабочими регистрами ассемблерных программ "рабочими лошадками". Их отличает то, что к ним можно адресоваться одним словом (16 битов) или однобайтовым кодом (8 битов). Левый байт считается старшим (High), а правый младшим (Low).
Регистр АХ = <AH:AL> первичный аккумулятор, используется во всех операциях ввода/вывода, в некоторых операциях со строками и в некоторых арифметических операциях. Например, команды умножения и деления предполагают ОБЯЗАТЕЛЬНОЕ использование регистра АХ (AL). Некоторые команды генерируют более эффективный код, если они имеют ссылки на регистр АХ.
Регистр ВХ = <BH:BL> базовый регистр, единственный из регистров общего назначения, используемый в индексной адресации. Кроме того, регистр ВХ может использоваться при вычислениях.
Регистр СХ = <CH:CL> является счетчиком. Он необходим для управления числом повторений циклов и для операций сдвига влево или вправо. Регистр СХ может использоваться также для вычислений.
Регистр DX = <DH:DL> регистр данных. Используется в некоторых операциях ввода-вывода, в операциях умножения и деления 16-разрядных чисел совместно с регистром АХ.
Любой из регистров общего назначения может быть использован для суммирования или вычитания 8- или 16-разрядных величин.
Сегментные регистры
Базовых сегментных регистров четыре. ВСЕ сегментные регистры служат для указания начала соответствующего сегмента.
Регистр CS (Code Segment) регистр сегмента кода, содержит начальный адрес сегмента кода. Этот адрес плюс величина смещения в командном указателе (регистр IP см. п. 3.3.3) определяют адрес команды, которая должна быть выбрана для выполнения. Для обычных программ нет необходимости делать ссылки на регистр CS.
Регистр DS (Data Segment) регистр сегмента данных, содержит его начальный адрес. Этот адрес плюс величина смещения, определенная в команде, указывают на конкретную ячейку в сегменте данных.
Регистр SS (Stack Segment) регистр сегмента стека, содержит начальный адрес в сегменте стека.
Регистр ES (Extra Segment) регистр сегмента расширения. Некоторые операции над строками используют дополнительный сегментный регистр ES для управления адресацией памяти. В этом случае регистр ES связан с индексным регистром D1. Обычно эту связь обозначают парой: <ES:DI>. Если необходимо использовать регистр ES, ассемблерная программа должна его инициализировать явно.
Регистр указателя команд
Регистр IP (Instruction Pointer) содержит смещение на команду, которая должна быть выполнена. Иначе говоря, данный регистр совместно с регистром CS (<CS:1P>) содержит адрес СЛЕДУЮЩЕЙ команды. Обычно он в программе явно не используется, но может изменять свое значение при использовании отладчика DOS DEBUG для тестирования программы. Именно благодаря содержимому этого регистра процессор всегда "знает, что ему делать дальше".
Регистр флагов
Это ОЧЕНЬ важный регистр, который сигнализирует процессору о его состоянии или о том, как выполнилась та или иная арифметическая или логическая команда. Этот регистр своего имени НЕ имеет, но в различных отладчиках он обычно называется FLAGS. Девять из 16 битов регистра флагов являются активными. Флаг это бит, принимающий значение 1, если он установлен, и 0, если он сброшен. За битами регистра флагов закреплены соответствующие имена, облегчающие понимание их назначения (для знающих английский язык).
При программировании на ассемблере наиболее часто используются флаги OF, SF, ZF и CF для арифметических операций и операций сравнения, а флаг DF для обозначения направления в операциях над строками.
Регистр указателя стека
Регистр SP (Stack pointer) используется при работе со стеком. Стек это область памяти, организованная для хранения и извлечения данных по принципу "Первым зашел, последним вышел". Регистр SP всегда показывает на вершину стека, т.е. на смешение последнего элемента в стеке, или в сочетании <SS:SP> на адрес этого элемента. Стек широко используется для промежуточного хранения данных и адресов, для передачи параметров в процедуры. Регистр SP может использоваться в арифметических или логических командах. Но вообще это НЕЖЕЛАТЕЛЬНО, лучше использовать специальные команды push и pop, которые корректно работают с вершиной стека
Регистры индексов
Регистр SI (Source Index). Этот регистр является индексом источника, обычно он используется в паре <DS:SI> для выполнения операций над строками.
Регистр DI (Destination Index). Этот регистр является индексом назначения (приемника). Пара <ES:DI> применяется также для строковых операций.
Оба индексных регистра можно применять и самостоятельно: для расширенной индексной адресации и для использования в операциях сложения и вычитания.
Регистр базового указателя
Регистр ВР (Base Pointer) указатель базы, облегчает доступ к параметрам: данным и адресам, переданным через стек. Может использоваться для расширенной индексной адресации и в операциях сложения и вычитания.
ВОПРОСЫ
PAGE 4