Регистры состояния и управления
Регистр ESP (SP) — это указатель памяти, который указывает на вершину стека (х86-совместимые процессоры не имеют аппаратного стека). О стеке мы поговорим в следующих главах. Также программно не может быть изменен регистр EIP (IP, Instruction Pointer) — указатель команд. Этот регистр указывает на инструкцию, которая будет выполнена следующей. Значение этого регистра изменяется непосредственно контроллером процессора согласно инструкциям, полученным из памяти.
Нам осталось рассмотреть только регистр флагов (иногда его называют регистром признаков) — EFLAGS. Он состоит из одноразрядных флагов, отображающих в основном текущее состояние арифметико-логического устройства. В наших программах мы будем использовать все 32 флага, а пока рассмотрим только самые важные из них:
• Признак нуля ZF (Zero Flag) — 1, если результат предыдущей операции равен нулю.
• Признак знака SF (Sign Flag) — 1, если результат предыдущей операции отрицательный.
• Признак переполнения OF (Overflow Flag) — 1, если при выполнении предыдущей операции произошло переполнение (overflow), то есть результат операции больше, чем зарезервированная для него память.
• Признак переноса CF (Carry Flag) — 1, если бит был «перенесен» и стал битом более высокого порядка (об этом мы поговорим в четвертой главе, когда будем рассматривать арифметические операции).
• Признак прерывания IF (Interrupt Flag) — 1, если прерывания процессора разрешены.
• Признак направления DF (Direction Flag) — используется для обработки строк, мы рассмотрим подробнее этот регистр в шестой главе.
Другие регистры процессора относятся к работе в защищенном режиме, описание принципов которого выходит за рамки этой книги.
Если 80386 процессор оснащен математическим сопроцессором 80387 (это отдельный чип на вашей материнской плате), он будет быстрее обрабатывать числа с плавающей точкой.
Современным процессорам отдельный математический процессор не нужен — он находится «внутри» процессора. Раньше вы могли немного сэкономить и купить компьютер без математического сопроцессора — его наличие было необязательно, и компьютер мог работать без него. Если математический процессор не был установлен, его функции эмулировались основным процессором, так что производительность операций над числами с плавающей точкой была очень низкой.
Примечание.
Когда мы будем говорить сразу о 16- и 32-разрядных регистрах, то мы будем использовать сокращение (Е)АХ) — вместо АХ и ЕАХ.
Материал взят с книги Рудольф Марек "АССЕМБЛЕР на примерах Базовый курс"
Скачать книгу полностью
Другие новости