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



asm: mov еах. SUMADDR fstp TBYTE PTR [еах] сохраняем интеграл Кроме косвенной адресации, сделать некую область памяти общей для разных процедур помогают директивы EXTERN и PUBLIC. Если область памяти общая, то и существовать она может только в единственном экземпляре, следовательно, объявить ее нужно только в одной из процедур. И там же нужно выделить ее ди­рективой PUBLIC, чтобы показать ассемблеру, что переменная доступна другим процедурам. В других же процедурах, использующих эту переменную, нужна пометка EXTERN, которая просит компилятор «не волноваться» насчет этой пере­менной, мол, для нее уже выделена память, а где конкретно — определит компо­новщик.

В качестве примера сделаем так, чтобы процедура simpson.asm использовала константы two и four, определенные в файле main.asm. Для этого нужно в файле main.asm пометить их как PUBLIC:

Обратите внимание, что теперь в процедуре simpson.asm память выделяется только одной переменной three QW0RD 3.0, которая не помечена директивой PUBLIC и пото­му доступна только внутри файла simpson.asm. Память для переменных two и four не выделяется, потому что она уже выделена в процедуре main.asm. Об этом как раз и говорит директива EXTERN two:QW0RD, four:QW0RD. Встретив ее, компилятор пой­мет, как обращаться с переменными two, four, упомянутыми в файле simpson.asm. Директива EXTERN указывает имена переменных и их тип (в нашем случае это 8-бай­товые слова QW0RD) — это все, что нужно знать компилятору. А где выделить для них память, решит компоновщик. И в этом ему поможет директива PUBLIC.


Логические команды

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

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

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

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


назад далее