Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Регистр флагов
При выполнении некоторых команд процессору необходима дополнительная информация, так же как и после выполнения некоторых команд необходимо сохранить дополнительную информацию о результатах выполнения команды. Чаще всего необходимость в дополнительной информации при выполнении команд возникает при выполнении арифметических команд. Поскольку процессор может оперировать данными определенных размеров (Byte, Word, LongWord), а при выполнении арифметических операций результат может не уместиться в используемый тип данных, то необходимо эту дополнительную информацию сохранять для дальнейшего учета. Местом хранения этой дополнительной информации является регистр флагов EFLAGS. Регистр флагов представляет собой 32-битный регистр специального назначения (РСН), где фиксируется информация о текущем состоянии процессора. Многие их его битов используются при выполнении команд и устанавливаются после выполнения команд. Расположение битов в регистре флагов представлено в таблице 4. Первая строка таблицы содержит номера битов регистра флагов, вторая – их аббревиатуры. Таблица 4.
Флаг CF называется флагом переноса (от английского Carry Flag). Флаг переноса устанавливается (становиться равным 1) при переносе (заёме), возникающем при сложении (вычитании). Иначе сбрасывается (становиться равным 0). Может быть установлен и в других случаях в зависимости от выполняемой команды. Флаг ZF – флаг нулевого результата (Zero Flag). Если результат последней операции равен нулю, то флаг устанавливается, иначе сбрасывается. Флаг AF – флаг вспомогательного переноса (Auxiliary Carry Flag). Устанавливается при переносе (заёме) из бита 3 (в бит 3) при сложении (вычитании). Используется только для двоично-десятичной арифметики, которая оперирует исключительно младшими байтами. Флаг SF – флаг знака (Sign Flag). Дублирует старший бит результата, который при использовании дополнительного кода соответствует знаку числа. Флаг OF – флаг переполнения (Overflow Flag). Сигнализирует о потере старшего бита результата в связи с переполнением разрядной сетки при работе со знаковыми числами. Равен 1, когда: - при сложении был перенос из старшего бита, но не было переноса в старший бит; - при сложении был перенос в старший бит, но не было переноса из старшего бита; - при вычитании был заем в старший бит, но не было заёма из старшего бита; - при вычитании был заем из старшего бита, но не было заёма в старший бит. Флаг PF – флаг четности (Parity Flag). Устанавливается в 1 при наличие четного числа единиц в двоичном представлении младшего байта результата (ЧЕТНОСТЬ НЕ ПО МАТЕМАТИКЕ!) Флаг DF – флаг направления (Direction Flag). Используется в командах работы со строками (цепочками). При DF=1 регистр(ы) индекса, используемый(ые) в командах работы со строками, увеличивается(ются) на 1 при каждом следующем выполнении команды, при DF=0 - регистр(ы) индекса уменьшается(ются) на 1. Остальные флаги являются достаточно специфичными и выходят за рамки данного пособия. Их описание можно найти, например, в [2-3].
К арифметическим командам относятся: ADD (Add) – Сложить; ADC (Add with Carry) – Сложить с учетом переноса; XADD (eXchange and Add) – Обменять и сложить; SUB (Subtract) – Вычесть; SBB (Subtract with borrow) – Вычесть с учетом заёма; INC (Increment) – Приращение; DEC (Decrement) – Декремент (отрицательное приращение), уменьшение; NEG (Negative) – Выдать число с противоположным (негативным) знаком; MUL (Multiplication) – Умножение; IMUL (Integer Multiplication) – Умножение с учета знака; DIV (Division) – Деление; IDIV (Integer Division) – Деление с учетом знака; CWD (Convert Word to Double Word) – Преобразовать слово в двойное слово; CDQ (Convert Double Word to Quad Word) – Преобразовать двойное слово в четверное слово; CBW (Convert Byte to Word) – Преобразовать байт в слово; CWDE (Convert Word to Double Word Extended) – Преобразовать слово в двойное слово, дополнительная функция.
Date: 2015-10-19; view: 475; Нарушение авторских прав |