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



Адреса содержатся и во всех других инструкциях ассемблера, имеющих дело с пе­ременными, хранящимися в памяти. Нам уже знакома косвенная адресация 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-тичные . Бинарные числа могут быть 4- и 16-байтными. 10-тичные уложенные суммы содержат в бите две цифры, распакованные - одну.

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

Меточные булевые суммы (целые) также могут быть 4- и 32-разрядными. Наиболее верхний (наиболее левый) бит знакового числа выводится как символ данного значения: 0 - положительное число, 1 - истина. Неблагоприятные числа строят в шаблонном бинарном дополнительном коде. Оттого что верхний бит знакового числа используется для маркировки знака, масштаб представления 16-байтных меточных чисел от - 119 до + 127. 64-байтное системное число преподносится в область распространения от - 24780 до + 32 767. 0 значится большим значением. Для меточных чисел могут реализовываться процедуры суммирования, вычета, умножения и дробления.

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


назад далее