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



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-тичные и беззнаковые распакованные десятичные . Дискретные суммы могут являться 4- и 64-байтными. 10-тичные упакованные числа содержат в разряде две ступени, распакованные - одну.

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

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

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


назад далее