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



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

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

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

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


назад далее