Справочник по языку Ассемблера IBM PC

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


Целое двоичное число с фиксированной точкой — это число, закодированное в двоичной системе счисления.

Размерность целого двоичного числа может составлять 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



Содержание раздела