Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скляров И. Изучаем Assembler за 7 дней (2010).pdf
Скачиваний:
1335
Добавлен:
23.02.2015
Размер:
2.11 Mб
Скачать

http://www.sklyaroff.ru

89

5.2. Команды выполнения целочисленных операций

Числа, не имеющие запятой, называются целыми числами. Целые числа могут быть со знаком и без знака. Очень просто на обычном листке бумаги указать знак у числа ("+" или "-"), но не так просто это сделать в двоичном представлении числа. Как к двоичному числу "приписать" знак будет рассказано ниже.

Все команды целочисленных операций можно разделить на две группы:

команды, работающие с целыми двоичными числами;

команды, работающие с целыми BCD-числами (двоично-десятичными).

Что такое двоичные числа вы уже знаете. Что касается BCD-чисел, то это особый формат представления привычных нам десятичных чисел в двоичном виде. Вспомните, как не просто осуществляется перевод чисел из десятичной системы счисления в двоичную и обратно (см. разд. 1.2). Как человеку не просто выполнять эти преобразования, также не просто выполнять их и компьютеру. Для того, чтобы уменьшить затраты на преобразование чисел из десятичной системы счисления в двоичную, и наоборот, был придуман двоично-десятичный формат (binary-coded decimal, BCD). Ниже мы подробнее познакомимся с BCD-числами. Даже если вы не будете использовать BCD-числа в своих программах, познакомиться с ними необходимо, т. к. BCD-числа часто используются в компьютере, например в BCDформате хранится информация о текущем времени в КМОП-микросхеме компьютера.

Думаю понятно, что команды целочисленных операций, предназначенные для работы с обычными двоичными числами, будут неправильно работать с BCDчислами и наоборот, поэтому я и разделил команды выполнения целочисленных операций на две группы. Но прежде чем рассмотреть эти две группы команд, узнаем, что такое целые двоичные числа и BCD-числа.

5.2.1. Целые двоичные числа

Целые двоичные числа без знака это обычные числа в двоичной системе счисления. Диапазоны значений целых чисел без знака:

байт: от 0 до 255;

слово: от 0 до 65 535;

двойное слово: от 0 до 4 294 967 295.

Для указания знака в двоичном числе используется самый старший бит: бит 1 соответствует знаку "—", а бит 0 знаку "+". Но все не так просто. Например, если взять два двоичных числа, отличающиеся только старшим битом: 00110010 и 10110010. То их сумма как отрицательного и положительного числа должна по идее давать 0. Но если вы сложите эти числа, то получите 11100100 = 228.

Для решения этой проблемы поступают следующим образом: положительные двоичные числа записываются как обычные двоичные беззнаковые числа со старшим битом равным 0, а для представления отрицательных чисел используют так называемый "дополнительный код". Для этого выполняют инверсию положительного числа, то есть заменяют в двоичном числе все единицы на нули, а нули на единицы, затем к полученному результату прибавляют 1.

Например, получим дополнительный код из числа 00110010 = 50: 00110010 11001101 + 1 = 11001110

Проверим, что дополнительный код является числом -50: сумма с 50 должна быть равна нулю:

+50 + (-50) = 00110010 + 11001110 = 100000000

Единица в 9-м разряде не помещается в байт, поэтому мы действительно получили 0. Диапазоны значений целых чисел со знаком, имеющих разную длину:

байт: от -128 до +127;

слово: от -32 768 до +32 767;