Разделы:


Best links:

Директивы языка ассемблера asm-86

Для определения сегментов программы служат директивы SEGMENT, ENDS, ASSUME и ORG. Назначение первых трех директив было показано в приведенном примере программы. Директива ORG задает ассемблеру адрес ячейки памяти для первой команды транслируемой программы в сегменте CS. Например, фрагмент программы

code       SEGMENT

ORG 0F3h

указывает ассемблеру, что результирующая программа должна быть расположена, начиная с адреса 0F3h относительно содержимого регистра СS. Начальное значение регистра CS в этом случае назначает сама программа-ассемблер. При необходимости можно указать конкретный физический адрес начала программы путем использования вспомогательного оператора АТ. Например, фрагмент

code       SEGMENT АТ 0А000h

ORG 0F3h

задает начальный адрес первой команды программы, равный 0А00FЗh.

Для определения типов переменных и резервирования памяти служат директивы DB, DW, DD, DQ и DT, которые определяют байт, слово, двойное слово, восемь байт и десять байт, соответственно. Например, совокупность операторов

alpha     DB  ?

beta       DW 0F200h

gamma   DD  ?

резервирует байт памяти для переменной alpha, 4 байта - для переменной gamma и 2 байта - для переменной beta, причем переменной beta присваивается начальное значение 0F200h. Эти директивы могут задавать также и массивы переменных, например операторы

mas   DB 5h, 0Аh, 13h zero   DB 0,0,0,0,0,0res     DW ?,?,?,?

определяют массив mas, включающий три константы 5h, 0АН и 13Н; массив zero, состоящий из шести байтов с нулевыми начальными значениями, и массив res, включающий четыре слова, для которых начальные значения не заданы. В тех случаях, когда требуется задать массив, состоящий из большого числа переменных, используется вспомогательный оператор DUP. Например, оператор

предыдущаяследующая