Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Команда CDQ. Команды инкрементирования INC и декрементирования DEC




Команда CWD

Команда CWDE

Команда CBW

Команды инкрементирования INC и декрементирования DEC

Команда INC добавляет, a DEC вычитает единицу из единственного операнда. Допустимые типы операнда – такие же, как у команд ADD и SUB, а формат команд таков:

inc O1; o1 = o1 + 1

dec O1; o1 = o1 - 1

Ни одна из этих инструкций не изменяет флаг CF.

Увеличение на единицу значения регистра AL выглядит следующим образом:

add al,l; AL = AL + 1

inc al; AL = AL + 1

Увеличение на единицу значения 16-битной переменной number:

inc word [number]; мы должны указать размер

11.2. Команды для работы с отрицательными числами

Система команд процессора 80386 включает в себя несколько команд, предназначенных для работы с целыми числами со знаком. Первая из них – команда NEG (negation, отрицание):

NEG r/m8

NEG r/m16

NEG r/m32

Используя NEG, можно преобразовывать положительное целое число в отрицательное и наоборот. Инструкция NEG имеет только один операнд, который может быть регистром или адресом памяти. Размер операнда – любой: 8, 16 или 32 бита.

neg еах; изменяет знак числа, сохраненного в ЕАХ

neg bl; то же самое, но используется 8-битный

; регистр BL

neg byte [number]; изменяет знак 8-битной переменной number

Расширение диапазона целого беззнакового числа делалось просто: мы просто копировали число в больший регистр, а расширенное “место” заполняли нулями. При работе с целыми числами со знаком мы должны заполнить это место старшим битом преобразуемого числа. Так мы можем сохранять положительные и отрицательные числа при расширении их диапазона. Расширение диапазона числа со знаком называется знаковым расширением.

Процессор имеет несколько специальных команд, предназначенных для знакового расширения. Эти команды не имеют операндов, они выполняют действия над фиксированными регистрами.

Команда CBW копирует седьмой (старший) бит регистра AL в регистр АН, расширяя таким образом оригинальное значение регистра AL в значение со знаком регистра АХ (значение АН становится равно 0x00 или 0xFF = 11111111b, в зависимости от старшего бита AL).

Команда CWDE копирует старший бит АХ в верхнюю часть (старшую часть) ЕАХ, расширяя таким образом оригинальное значение АХ в двойное слово со знаком, которое будет помещено в регистр ЕАХ.

Команда CWD копирует старший бит АХ в регистр DX, расширяя таким образом оригинальное значение АХ в пару регистров со знаком DX:AX.

Команда CDQ копирует старший бит ЕАХ в регистр EDX, расширяя таким образом оригинальное значение ЕАХ в пару регистров со знаком EDX:EAX.

11.3. Арифметические команды умножения и деления

Дополнительный код делает возможным сложение и вычитание целых чисел со знаком и без знака с помощью одних и тех же команд ADD и SUB. Но к умножению и делению это не относится: умножение выполняется командой MUL, а деление – командой DIV. Для умножения и деления чисел со знаком служат отдельные команды – IMUL и IDIV. Операнды этих инструкций такие же, как у MUL и DIV.

Операции умножения и деления имеют свою специфику. В результате умножения двух чисел мы можем получить число, диапазон которого будет в два раза превышать диапазон операндов. Деление целых чисел – это операция целочисленная, поэтому в результате образуются два значения: частное и остаток.

С целью упрощения реализации команд умножения и деления эти команды спроектированы так, что один из операндов и результат находятся в фиксированном регистре, а второй операнд указывается программистом.

Подобно командам ADD и SUB, команды MUL, DIV, IMUL, IDIV изменяют регистр признаков.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 644; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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