Представление чисел со знаком
Необходимо понимать, что микропроцессоры (в частности микропроцессор Intel 8086) не могут работать с данными произвольного размера, а лишь с данными размером в байт (8 бит), слово (2 байта или 16 бит) и двойное слово (4 байта) что определяется их аппаратным устройством (см. разд.2).
Для целых чисел без знака числовой диапазон этих размеров данных представлен в табл.1.3.
Целые числа со знаком отличаются от целых чисел без знака особой трактовкой старшего разряда данных (7-го, 15-го или 31-го). Если старший бит равен 0, то число считается положительным и записанным в прямом коде (обычным образом), если старший бит равен 1, то число считается отрицательным и записанным в дополнительном коде. При этом физически этот старший бит ничем не отличается от других, и то какие числа подразумеваются под данными, определяется используемыми командами. Диапазон целых чисел со знаком для данных разного размера приведен в табл.1.3.
Таблица 1.3. Числовой диапазон данных различного размера
Размер данных | Целые числа со знаком | Целые числа без знака |
1 байт (8 бит) | –128…+127 256 чисел | 0…255 256 чисел |
1 слово (2 байта) | –32768…+32767 65536 чисел | 0…65535 65536 чисел |
1 двойное слово (4 байта) | чисел | 0… чисел |
Для получения дополнительного кода, необходимо:
1. Получить модуль данного числа в двоичном представлении и дополнить его до необходимой размерности (байта, слова или двойного слова) согласно табл.1.3.
2. Получить обратный код, инвертировав все разряды полученного числа (заменить каждый разряд противоположным по значению).
3. Получить дополнительный код, добавив к результату .
Рассмотрим несколько примеров:
обратный код дополнительный код | |
обратный код дополнительный код |
При получении двоичного представления числа , двоичное представление числа необходимо дополнить до слова, поскольку согласно табл.1.3. для представления числа необходимы данные размером 2 байта.
В программах на языке ассемблера система счисления обозначается буквой, которая следует сразу после числа (B – двоичная, D – десятичная, H – шестнадцатеричная (см. разд.4)). Именно таким образом для удобства записи мы будем обозначать числа в различных системах счисления в дальнейшем.
Вопросы для самопроверки
1. Переведите числа в десятичную систему счисления:
1.1. ;
1.2. .
2. Осуществить перевод чисел по схеме :
2.1. ;
2.2. .
3. Переведите числа в двоичную систему счисления:
3.1. ;
3.2. ;
3.3. ;
3.4. .
4. Выполните арифметические действия:
4.1. ;
4.2. ;
4.3.
4.4. .