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



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.


Микропроцессорное программирование

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

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

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

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


назад далее