Целые двоичные числа
Целое двоичное число с фиксированной точкой — это число, закодированное в двоичной системе счисления.
Размерность целого двоичного числа может составлять 8, 16 или 32 бит. Знак двоичного числа определяется тем, как интерпретируется старший бит в представлении числа. Это 7-й, 15-й или 31-й биты для чисел соответствующей размерности (см. Типы данных ). При этом интересно то, что среди арифметических команд есть всего две команды, которые действительно учитывают этот старший разряд как знаковый, — это команды целочисленного умножения и деления imul и idiv. В остальных случаях ответственность за действия со знаковыми числами и, соответственно, со знаковым разрядом ложится на программиста. К этому вопросу мы вернемся чуть позже. Диапазон значений двоичного числа зависит от его размера и трактовки старшего бита либо как старшего значащего бита числа, либо как бита знака числа (табл. 1).
Таблица 1. Диапазон значений двоичных чисел
Размерность поля | Целое без знака | Целое со знаком |
байт | 0...255 | –128...+127 |
слово | 0...65 535 | –32 768...+32 767 |
двойное слово | 0...4 294 967 295 | –2 147 483 648...+2 147 483 647 |
Как описать числа с фиксированной точкой в программе?
Это делается с использованием директив описания данных. К примеру, последовательность описаний двоичных чисел из сегмента данных листинга 1 (помните о принципе “младший байт по младшему адресу”) будет выглядеть в памяти так, как показано на рис. 2.
Листинг 1. Числа с фиксированной точкой ;prg_8_1.asm masm model small stack 256 .data ;сегмент данных per_1 db 23 per_2 dw 9856 per_3 dd 9875645 per_4 dw 29857 .code ;сегмент кода main: ;точка входа в программу mov ax,@data ;связываем регистр dx с сегментом mov ds,ax ;данных через регистр ax exit: ;посмотрите в отладчике дамп сегмента данных mov ax,4c00h ;стандартный выход int 21h end main ;конец программы |
Рис. 2. Дамп памяти для сегмента данных листинга 1