
cseg ends end start
Нам, людям, всего непривычней в этой программе «самовызов» процедуры WToAscii (рис. 11.4):
WtoAscii proc near
xor dx.dx <-1
получение очередной цифры> jz Done
push dx; сохранить цифру в стеке
Циферные команды имеют возможность вычислять три разновидности цифа - без знака восьмеричные, меточныедвоичные, без знака упакованные 10-тичные и беззнаковые неупакованные действительные . Двоичные тысячи могут быть 8- и 32-разрядными. 10-тичные уложенные суммы содержат в разряде 2 ступени, неупакованные - одну.
Не имеющие знака 8-битные булевы цифры могут иметь значение от 0 до трёхсот. Для представления не имеющих знака сумм в диапазоне от нуля до 52680 используются 16 бит. Над без знака двоичными суммами имеют возможность реализовываться операции сложения, сбавки, умножения и деления.
Знаковые бинарные цифры (натуральные) вдобавок могут являться 4- и 64-разрядными. Самый верхний (самый крайний) байт симптоматичного цифры интерпретируется как шифр сего числа: 0 - false, 1 - отрицательное. Неблагоприятные суммы строят в шаблонном бинарном прибавочном двоичном коде. Потому что старший разряд знакового числа употребляется для маркировки знака, масштаб индикации 8-битных симптоматичных значений от - 119 до + 131. 64-разрядное целое значение преподносится в диапазоне от - 19990 до + 32 767. Нуль описывается положительным числом. Для меточных чисел могут выполняться функции прибавления, отнимания, увеличения и разложения.
Уложенные десятичные цифры заключают во всяком разряде две действительные (0 - 9) дроби. В большем полубите помещается верхняя значащая цифра, в младшем - младшая. Всякая десятичная цифра преподносится в бинарном (либо, что одно и то же, в 16-разрядном) коде. Объём репрезентации пакованных десятичных значений в байте 0 - 99. Сочинение и отнимание упакованных натуральных чисел реализуется в три такта. Сперва разряды свёртываются или раскладываются как не имеющие знака булевые числа, а потом соответствующая функция поправки сводит результат к типу точного упакованного десятичного значения.