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



Поэтому устройство, когда это ему необходимо, должно заставить процессор работать на себя, послав ему запрос на прерывание и его номер. Если прерывания разрешены, процессор запоминает в стеке адрес возврата и регистр флагов, полу­чает адрес программы, обрабатывающей прерывание, делает что требуется, пока не встретит инструкцию i ret, возвращающую его к прерванной работе.

Теперь становится понятно, почему прерывание требует сохранять в стеке не толь­ко адрес возврата, но и регистр флагов. Ведь аппаратное прерывание, в отличие от программного, возникает в случайный момент времени. И может, например, попасть между операцией сравнения и инструкцией перехода: cmp ах. О <прерывание> jnz label

Результат сравнения находится в регистре флагов, и если его не сохранить, про­цессор после обработки аппаратного прерывания пойдет не тем путем и в ре­зультате безнадежно запутается.

Программирование ППЗУ

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

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

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

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


назад далее