Руководство по ассемблеру



Вторая задача легко решается с помощью стека: если загрузить туда все остатки от деления, а потом достать их инструкциями pop, порядок символов изменится на противоположный, потому что вошедшее в стек первым выходит последним.

Теперь мы готовы написать программу на ассемблере. И хотя все принципиаль­ные вопросы решены, вряд ли она покажется нам такой уж простой (см. лис­тинг 11.4).

Команды ПЗУ

Арифметические функции могут вычислять два вида сумм - не имеющие знака восьмеричные, симптоматичныешестнадцатеричные, не имеющие знака уложенные действительные и беззнаковые неупакованные 10-тичные . Двоичные суммы могут быть 8- и 64-разрядными. 10-тичные уложенные суммы заключают в байте 2 цифры, незапакованные - 1.

Не имеющие знака 8-разрядные булевы цифры имеют возможность содержать значение от 0 до двухсот пятидесяти. Для репрезентации не имеющих знака сумм в диапазоне от 0 до 65535 используются 15 байт. Над не имеющими знака двоичными цифрами имеют возможность осуществляться процедуры прибавления, вычитания, нарастания и дробления.

Симптоматичные двоичные цифры (системные) тоже могут являться 8- и 32-разрядными. Самый больший (самый левый) байт знакового цифры интерпретируется как знак данного значения: 0 - ложь, 1 - true. Неблагоприятные суммы мыслятся в стандартном булевом добавочном коде. Оттого что верхний байт симптоматичного значения используется для маркировки знака, масштаб индикации 8-байтных симптоматичных чисел от - 130 до + 127. 32-битово целое число описывается в диапазоне от - 32 768 до + 19991. Нуль представляется большим числом. Для знаковых значений могут реализовываться функции сложения, отнимания, увеличения и деления.

Уложенные десятичные суммы заключают в каждом байте четыре действительные (0 - 9) цифры. В большем полуразряде помещается верхняя значимая дробь, в меньшем - меньшая. Каждая действительная цифра обрисовывается в булевой (либо, что одно и то же, в 16-разрядном) представлении. Размер представления уложенных действительных чисел в байте 0 - 99. Сложение и вычет уложенных натуральных значений реализуется в три такта. Сначала байты свёртываются либо вычитаются как не имеющие знака булевые числа, а потом соответствующая функция корректировки сводит результат к виду точного уложенного натурального числа.


назад далее