Создать, удалить, сделать текущим каталог. (15 билет)

Операции над каталогами:

39h - создать каталог;

3Ah - удалить каталог;

3Bh - сменить текущий каталог;

47h - получить текущий каталог;

Создание каталога:

mov ah,39h

mov dx,offset Directory

int 21h

Сделать текущим:

Функция 3BH прерывания 21H устанавливает текущий каталог. DS:DX должны указывать на путь к каталогу в стандартном виде и
эта строка должна завершаться байтом ASCII 0.

;в сегменте данных

PATH DB 'B:BIRDS\PARROTS',0
;---делаем POLLY текущим каталогом
MOV AH,3BH ;номер функции
LEA DX,PATH ;DS:DX должны указывать на путь INT 21H; устанавливаем текущий каталог
Чтобы определить какой каталог является текущим надо использовать функцию 47H прерывания 21H. DS:SI должны указывать на область данных размером 64 байта, в которую будет записан путь. В
DL указывается накопитель, причем 0 = "по умолчанию", 1 = A, 2 = B и т.д. При возврате функция возвращает строку без имени накопителя. Если был указан несуществующий накопитель, то в AL возвращается код ошибки 15. Строка начинается с имени первого подката-
лога цепочки, а не с обратной косой черты. Байт ASCII 0 сигнализирует о конце строки. В данном примере имя текущего каталога присваивается переменной "CURRENT_DIR":
;в сегменте данных

CURRENT_DIR DB 64 DUP(?)
;получить текущий каталог

MOV AH,47h; номер функции

LEA SI,CURRENT_DIR; указываем на область данных

MOV DL,1; накопитель A
INT 21H; помещает строку по адресу DS:SI

Макрокоманды, процедуры. Отличия. (16 билет)

Процедура – группа команд для решения конкретной подзадачи.

Синтаксис процедуры:

имя_процедуры PROC [[модификатор_языка] язык] [расстояние]

команды

[имя_процедуры] ENDP

Процедуру можно располагать в конце программы либо вкладывать в другую. Во втором случае необходимо предусмотреть обход тела процедуры, ограниченного директивами PROC и ENDP, с помощью JMP/

Макрокоманды.

Программы, написанные на языке ассемблера, часто содержат повторяющиеся участки текста с одинаковой структурой. Такой участок текста можно оформить в виде макроопределения и списка фактических аргументов, что приводит к генерации всего требуемого текста, называемого макрорасширением. Варьируя фактические аргументы, можно сохраняя неизменной структуру макрорасширения, изменить отдельные его элементы.

Макроопределение должно начинаться строкой с именем макроопределения и директивой MACRO, в поле аргументов которого указывается список формальных аргументов. Заканчивается макроопределение директивой ENDM.