Сборник по задачам и примерам Assembler

     

Создать псевдоним



Создать псевдоним

Функция 71A8h предназначена для генерации короткого (в формате 8.3) имени для заданного файла с длинным именем.

Вход: АН = 71A8h; DS:SI — адрес строки (с нулевым символом в конце), содержащей длинное имя нужного файла без указания пути; ES:DI — адрес буфера, в котором возвращается псевдоним; DH — формат псевдонима (0—11 -символьное имя элемента каталога; 1 — имя файла в формате 8.3); DL — набор символов для длинного имени и псевдонима. Это значение — упакованная величина в формате: биты 0..3 — набор символов в prpprg0дном имени файла (0 — Windows ANSI; I — OEM; 2 — Unicode); биты 4..7 — набор символов в создаваемом коротком имени (0 — Windows ANSI; I - OEM; 2 - Unicode).

Выход: CF ¦ 0 — успешное выполнение функции; CF = 1 — АХ = код ошибки.

:prgO7_27.asm - программа демонстрации применения функции 71A8h прерывания 21h ;для создания псевдонима.

.'data'"

fi1enamejong db 'my_file with long name.txt'.0

point_fname_long dd fi1enamejong

filename_short db 11 dup (20h)

point_fname_short dd filename short

handle dw 0

:.........

.code



mov bx.0100h+0400h;He использовать буферизацию + содержимое DI в псевдоним

movdx.l :открыть файл, если он существует, иначе вернуть ошибку

Ids si,point fname_long ;формируем указатель на имя файла

movdi.7 :добавить в конец псевдонима символ 7 repeat:mov ax,716ch ;номер функции DOS

хогсх.сх атрибуты файла - обычный файл - доступ для чтения-записи

int 21h открываем файл

jnc ml :если файл существовал, то переход

movdx.lOh :создать файл

jmp repeat ;переход - повторим открытие файла ml: mov handle.ax :сохранин дескриптор файла создадим псевдоним

Ids si.point_fname_long

les di,point_fname_short

mov dh. 1:prg07_27.asm - программа демонстрации применения функции 71A8h прерывания 21h ;для создания псевдонима.

mov dl. 0

mov ax,7la8h int 21h действия при успешном открытии файла

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



Содержание раздела