Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абель.docx
Скачиваний:
13
Добавлен:
26.11.2018
Размер:
569.84 Кб
Скачать

8000 До ffff представляют отрицательные значения. В десятичном исчислении

эти пределы выражаются числами +32767 и -32768.

В примере на рис.5.1 поля FLD1DW и FLD2DW определяют числовые

константы. Поле FLD3DW определяет адрес - в данном случае смещение на

адрес FLD7DB. В результате генерируется объектный код 0021 (R обозначает

перемещаемость). Проверяя выше по рисунку, видно, что относительный адрес

поля FLD7DB действительно 0021.

Поле FLD4DW определяет таблицу из пяти числовых констант. Заметим,

что объектный код для каждой константы имеет длину в oдно слово (два

байта).

Для форматов директив DW, DD и DQ ассемблер преобразует константы в

шест. объектный код, но записывает его в обратной последовательности.

Таким образом десятичное значение 12345 преобразуется в шест.3039, но

записывается в объектном коде как 3930.

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

________________________________________________________________

Директива DD определяет элементы, которые имеют длину в два cлова

(четыре байта). Числовое выражение может содержать одну или более

констант, каждая из которых имеет максимум четыре байта (восемь шест.

цифр). Наибольшее положительное шест. число в четырех байтах это 7FFFFFFF;

все "большие" числа от 80000000 до FFFFFFFF представляют отрицательные

значения. В десятичном исчислении эти пределы выражаются числами

+2147483647 и -2147483648.

В примере на рис.5.1 поле FLD3DD определяет числовую константу. В

поле FLD4DD генерируется разница между двумя адресами, в данном случае

результатом является длина поля FLD2DB. Поле FLD5DD определяет две

числовые константы.

Ассемблер преобразует все числовые константы в директиве DD в шест.

представление, но записывает объектный код в обратной последовательности.

Таким образом десятичное значение 12345 преобразуется в шест.00003039, но

записывается в oбъектном коде как 39300000.

Символьное выражение директивы DD ограничено двумя символами.

Ассемблер преобразует символы и выравнивает их слева в четырехбайтовом

двойном слове, как показано в поле FLD2DD в объектном коде.

ДИРЕКТИВА ОПРЕДЕЛЕНИЯ УЧЕТВЕРЕННОГО СЛОВА (DQ)

________________________________________________________________

Директива DQ определяет элементы, имеющие длину четыре слова (восемь

байт). Числовое выражение может содержать одну или более констант, каждая

из которых имеет максимум восемь байт или 16 шест. цифр. Наибольшее

положительное шест. число - это семерка и 15 цифр F. Для получения

представления о величине этого числа, покажем, что шест. 1 и 15 нулей

эквивалентен следующему десятичному числу:

1152921504606846976

В примере на рис. 5.1 поля FLD2DQ и FLD3DQ иллюстрируют числовые

значения. Ассемблер преобразует все числовые константы в директиве DQ в

шест. представление, но записывает объектный код в обратной

последовательности, как и в директивах DD и DW.

Обработка ассемблером символьных строк в директиве DQ aналогично

директивам DD и DW.

ДИРЕКТИВА ОПРЕДЕЛЕНИЯ ДЕСЯТИ БАЙТ (DT)

________________________________________________________________

Директива DT определяет элементы данных, имеющие длину в десять байт.

Назначение этой директивы связано с "упакованными десятичными" числовыми

величинами (см. гл.13). По директиве DT генерируются различные константы,

в зависимости от версии ассемблера; для практического применения

ознакомьтесь с руководством по вашему aссемблера.

На рис.5.1 приведены примеры директивы DT для неопределенного

элемента и для двухсимвольной константы.

Программа на рис.5.1 содержит только сегмент данных. Xотя асcемблер

не выдает сообщений об ошибках, в таблице LINK MAP появится

предупреждение: "Warning: No STACK Segment" (Предупреждение: не определен

сегмент стека), а компоновщик LINK выдаст "There were 1 errors detected"

(Обнаружена 1 ошибка). Несмотря на это предупреждение можно использовать

отладчик DEBUG для просмотра объектного кода, как показано на рис.5.2.

__________________________________________________________________________

D:\ D>DEBUG D:EXDEF.EXE

-D