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



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.


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

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

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

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

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


назад далее