Директивы языка ассемблера 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. Например, оператор
предыдущаяследующая© Copyright, 2009.
Для связи: info@dgs-srl.com.