Ассемблер и программирование для IBM PC


          

ГЛАВА 5. Определение Данных - часть 4


ДИРЕКТИВА ОПРЕДЕЛЕНИЯ СЛОВА (DW) ------------------------------------------------------------

Директива DW определяет элементы, которые имеют длину в одно слово (два байта). Символьное выражение в DW ограничено двумя символами, которые ассемблер представляет в объектном коде так, что, например, 'PC' становится 'CP'. Для определения символьных строк директива DW имеет ограниченное применение. Числовое выражение в DW может содержать одно или более двухбайтовых констант. Два байта представляются четырьмя шест. цифрами. Наибольшее положительное шест. число в двух байтах это 7FFF; все "большие" числа от 8000 до FFFF представляют отрицательные значения. В десятичном исчислении эти пределы выражаются числами +32767 и -32768. В примере на рис. 5.1 поля FLD1DW и FLD2DW определяют числовые константы. Поле FLD3DW определяет адрес - в данном случае смещение на адрес FLD7DB. В результате генерируется объектный код 0021 (R обозначает перемещаемость). Проверяя выше по рисунку, видно, что относительный адрес поля FLD7DB действительно 0021. Поле FLD4DW определяет таблицу из пяти числовых констант. Заметим, что объектный код для каждой константы имеет длину в oдно слово (два байта). Для форматов директив DW, DD и DQ ассемблер преобразует константы в шест. объектный код, но записывает его в обратной последовательности. Таким образом десятичное значение 12345 преобразуется в шест.3039, но записывается в объектном коде как 3930.

ДИРЕКТИВА ОПРЕДЕЛЕНИЯ ДВОЙНОГО СЛОВА (DD) ------------------------------------------------------------

Ассемблер для IBM PC. Глава 5 108

Директива DD определяет элементы, которые имеют длину в два cлова (четыре байта). Числовое выражение может содержать одну или более констант, каждая из которых имеет максимум четыре байта (восемь шест. цифр). Наибольшее положительное шест. число в четырех байтых это 7FFFFFFF; все "большие" числа от 80000000 до FFFFFFFF представляют отрицательные значения. В десятичном исчислении эти пределы выражаются числами +2147483647 и -2147483648. В примере на рис. 5.1 поле FLD3DD определяет числовую константу. В поле FLD4DD генерируется разница между двумя адресами, в данном случае результатом является длина поля FLD2DB. Поле FLD5DD определяет две числовые константы. Ассемблер преобразует все числовые константы в директиве DD в шест. представление, но записывает объектный код в обратной последовательности. Таким образом десятичное значение 12345 преобразуется в шест. 00003039, но записывается в oбъектном коде как 39300000. Символьное выражение директивы DD ограничено двумя символами. Ассемблер преобразует символы и выравнивает их слева в четырехбайтовом двойном слове, как показано в поле FLD2DD в объектном коде.




Содержание  Назад  Вперед