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



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.


Вычислительные команды

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

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

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

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


назад далее