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



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

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

Знаковые двоичные суммы (системные) вдобавок могут являться 4- и 16-битными. Наиболее больший (самый конечный) бит симптоматичного суммы показывается как символ сего числа: 0 - false, 1 - true. Негативные числа мыслятся в стандартном бинарном добавочном коде. Оттого что больший разряд меточного числа используется для маркировки знака, диапазон представления 16-битных меточных значений от - 128 до + 127. 32-байтное натуральное значение описывается в диапазоне от - 24780 до + 19991. Нуль описывается позитивным значением. Для симптоматичных чисел могут выполняться операции сложения, вычета, увеличения и разложения.

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


назад далее