русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Команды двоичной арифметики.


Дата добавления: 2015-06-12; просмотров: 1217; Нарушение авторских прав


Арифметические команды процессора i486 работают с числовыми данными, кодированными в двоичном виде. Операции включают сложение, вычитание, умножение и деление, а также инкрементирование и декрементирование, сравнение и изменение знака (инвертирование). Поддерживаются как двоичные целые со знаком, так и двоичные без знака. Команды двоичной арифметики могут использоваться также в качестве этапов в арифметических вычислениях с десятичными целыми. Операнды-источники могут быть непосредственными значениями, регистрами общего назначения или данными в памяти. Операнды назначения могут быть регистрами общего назначения или ячейками памяти (за исключением ситуации, когда операнд-источник содержится в ячейке памяти). Основные арифметические команды имеют специальный формат для случая, когда операндом-источником является непосредственное значение, а операндом назначения является регистр AL или EAX. Эти форматы имеют длину на один байт короче, чем арифметические команды общего вида.

Арифметические команды обновляют значения флагов ZF, CF, SF и OF, отражающих вид полученного результата. Вид команды, используемый для проверки флагов, зависит от того, как интерпретируются данные - как имеющие знак или как не имеющие знака. Флаг CF содержит информацию, относящуюся к целым без знака; флаги SF и OF содержат информацию, относящуюся к целым со знаком. Флаг ZF содержит информацию, касающуюся как целых со знаком, так и целых без знака: флаг ZF получает значение 1 (устанавливается), когда все биты результата очищаются (становятся равными 0).

Арифметические команды работают с 8-, 16-, или 32-разрядными данными. Флаги обновляются в зависимости от размеров операций. Например, 8-разрядная команда ADD устанавливает флаг CF равным 1, если сумма операндов превышает 255 (десятичное). Если используется целое без знака, CF флаг может быть проверен после этих арифметических операций для того, чтобы определить, когда операция требует переноса или заема единицы разряда для того, чтобы перейти к следующему этапу операции. Флаг CF устанавливается в 1, если появляется перенос (в командах сложения ADD, ADC, AAA и DAA) или заем единицы (в командах вычитания SUB, SBB, AAS, DAS, CMP и NEG).



Команды INC и DEC не изменяют состояния флага CF. Это позволяет использовать команды для обновления счетчиков, используемых для управления циклами без изменения имеющегося состояния арифметических результатов. Чтобы определить арифметическое состояние счетчика, можно проверить состояние флага ZF (для обнаружения окончания цикла) или использовать команды ADD и SUB для обновления значения, хранящегося в счетчике. Флаги SF и OF поддерживают целочисленную арифметику со знаком. Флаг SF имеет значение знакового бита результата. Старшим значащим битом (MSB) значения целого со знаком является бит, следующий за знаковым битом - бит 6 байта, бит 14 слова, или бит 30 двойного слова. Флаг OF устанавливается равным 1 в одном из двух случаев :

  • Был порожден перенос из MSB в знаковый бит, но никакого переноса из знакового бита не было выполнено (команды сложения ADD, ADC, INC, AAA, и DAA). Другими словами, результат был больше, чем максимальное положительное число, которое может быть представленно в двоичном дополнительном коде.
  • Был порожден перенос из знакового бита в MSB, но никакого переноса из знакового бита не было выполнено (команды вычитания SUB, SBB, DEC, AAS, DAS, CMP и NEG). Другими словами, результат оказался меньше, чем наименьшее отрицательное число, которое может быть представлено в двоичном дополнительном коде.

Эти флаги статуса проверяются обоими типами условных команд: Jcc (переход по условию cc) или SETcc (установка байта по условию).



<== предыдущая лекция | следующая лекция ==>
Команды преобразования типов. | Команды сложения и вычитания.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.249 сек.