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



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

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

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

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


назад далее