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



Адреса содержатся и во всех других инструкциях ассемблера, имеющих дело с пе­ременными, хранящимися в памяти. Нам уже знакома косвенная адресация mov ах, [Ьх], где адрес (смещение) слова в памяти хранит регистр Ьх. Встречалась нам и адресация, полезная при работе с массивами: mov al. array[si]

где si добавляется к адресу начала массива array и в результате получается ад­рес его элемента под номером si. Процессоры 8086 и 80286 могут использовать для такой адресации четыре регистра: bx, bp, si, di.

Мы уже привыкли к тому, что при адресации в квадратных скобках стоит нечто, содержащее адрес. А поскольку array и si в нашем последнем примере тоже об­разуют адрес, то можно заключить их в квадратные скобки и записать инструк­цию так:

mov al. [array + si]

Конечно, это только другая запись; код инструкции, сгенерированный ассембле­ром, будет и в том и другом случае одинаковым.

Кроме перечисленных, процессоры 8086 и 80286 могут использовать и другие способы адресации с использованием двух регистров. Разные варианты такой ад­ресации показаны на рис. 10.1.

Чтобы указать правильный адрес, нужно взять по регистру из каждой колонки и (если это необходимо) добавить смещение. Ассемблер согласится искать в па-

Команды вычисления

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

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

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

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


назад далее